我正在尝试使用 PHP SDK 3.2.2 从 Facebook 检索访问令牌,这是我在 Facebook 成功登录后放置在重定向 URL 中的代码。我的问题是$this->facebook->getAccessToken()在用户授予对 APP 的访问权限后没有返回用户访问令牌,只是一个格式为:'AppId|AppSecret' 的字符串,我必须包含代码手动获取用户访问令牌。这项工作,但我不知道为什么当我使用 getAccessToken 时没有返回正确的令牌。我还想知道是否有比使用 $code 更好的方法来检索用户访问令牌,因为我觉得这不是一个好方法。
注意:我使用 $this->facebook 因为我将它作为 Codeigniter 库加载。
$access_token = $this->facebook->getAccessToken();
//-------------------------------------------------------------------------
//echo '<br/>Access Token: ' . $access_token;
// Generare Token if not created:
$code = $_REQUEST["code"];
if ( isset($code) ) {
//echo '<br/>Code Enviado: ' . $code;
//exit();
$appId = $this->facebook->getAppId();
$appSecret = $this->facebook->getAppSecret();
$redirectTo = base_url('asociar/acc_facebook/step2/');
$token_url="https://graph.facebook.com/oauth/access_token?client_id="
. $appId . "&redirect_uri=" . urlencode($redirectTo)
. "&client_secret=" . $appSecret
. "&code=" . $code . "&display=popup";
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$access_token = $params['access_token'];
//echo '<br/>Repitiendo el Token';
$this->facebook->setAccessToken($access_token);
//echo '<br/>Second Access Token Fijado: ' . $access_token;
}
//-----------------------------------------------------------------------
更新:
此问题是由于我将 CI 与 PHP SDK 一起使用(请查看我自己的答案),但该答案对 Facebook PHP SDK 有此问题的任何人都有效(请查看 @Imbru 答案)