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的示例以获取完整的流程,该文档已被很好地记录。 希望能有所帮助。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...