FB PHP认证

如何解决FB PHP认证

| 我在这里http://developers.facebook.com/docs/authentication/找到了此代码
<?PHP 

   $app_id = \"YOUR_APP_ID\";
   $app_secret = \"YOUR_APP_SECRET\";
   $my_url = \"YOUR_URL\";

   session_start();
   $code = $_REQUEST[\"code\"];

   if(empty($code)) {
     $_SESSION[\'state\'] = md5(uniqid(rand(),TRUE)); //CSRF protection
     $dialog_url = \"http://www.facebook.com/dialog/oauth?client_id=\" 
       . $app_id . \"&redirect_uri=\" . urlencode($my_url) . \"&state=\"
       . $_SESSION[\'state\'];

     echo(\"<script> top.location.href=\'\" . $dialog_url . \"\'</script>\");
   }

   if($_REQUEST[\'state\'] == $_SESSION[\'state\']) {
     $token_url = \"https://graph.facebook.com/oauth/access_token?\"
       . \"client_id=\" . $app_id . \"&redirect_uri=\" . urlencode($my_url)
       . \"&client_secret=\" . $app_secret . \"&code=\" . $code;

     $response = file_get_contents($token_url);
     $params = null;
     parse_str($response,$params);

     $graph_url = \"https://graph.facebook.com/me?access_token=\" 
       . $params[‘access_token’];

     $user = json_decode(file_get_contents($graph_url));
     echo(\"Hello \" . $user->name);
   }
   else {
     echo(\"The state does not match. You may be a victim of CSRF.\");
   }

?>
我更改的是应用程序ID应用程序的秘密和URL,我创建了一个带有HTML语句的页面,并将其上传到Web服务器,但未找到错误页面。有人可以帮我吗?我还需要添加任何东西吗?     

解决方法

您试图在代码中执行的操作是一种针对已存在内容的解决方法。请使用Facebook PHP SDK处理您目前正在尝试的操作。它使事情变得容易得多,而且您可能会在更短的时间内实现目标。     ,您需要使用facebook SDK。 这是示例教程,效果很好, http://www.9lessons.info/2011/01/facebook-graph-api-connect-with-php-and.html 我相信它将解决您的问题。     ,您应该使用Facebook PHP SDK(请参阅github)。登录用户非常简单。这是这样的:
require \'facebook.php\';
$facebook = new Facebook(...);

$user = $facebook->getUser();
如果用户已登录,则“ 2”将包含其Facebook ID。但这并不意味着您具有进行API调用的有效访问令牌:如果他刚从Facebook注销,
$user
将不会为null,但访问令牌将不再有效。 一种检查令牌是否有效的方法实际上是尝试进行API调用:
if ($user) {
  // The user is logged in
  try {
    $facebook->api(\'/me\');
    // Here : API call succeeded,you have a valid access token
  } catch (FacebookApiException $e) {
    // Here : API call failed,you don\'t have a valid access token
    // you have to send him to $facebook->getLoginUrl()
    $user = null;
  }
} else {
  // The user is not logged
  // you have to send him to $facebook->getLoginUrl()
}
然后,登录用户或获取有效的访问令牌:
if (!$user) {
  // display link to $facebook->getLoginUrl();
}
您可能想查看Facebook PHP SDK的示例以获取完整的流程,该文档已被很好地记录。 希望能有所帮助。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?