我试图从Facebook使用PHP SDK 3.2.2检索访问令牌,下面的代码是我在Facebook中的成功用户登录后放置在重定向URL中的代码。我的问题是,在用户授予APP访问权限后,用户访问令牌不会返回用户访问令牌,而只是一种形式为'AppId | AppSecret'的字符串,我必须包括手动获取用户访问令牌的代码。这项工作,但我不知道为什么当我使用getAccessToken不回馈正确的令牌。我还想知道如果有更好的方法来检索用户访问令牌比用$ code,因为我不觉得这是一个很好的方法。从Facebook获取访问令牌PHP SDK无法正常工作
注意:我使用$ 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;
}
//-----------------------------------------------------------------------
UPDATE:
这个问题是由于我使用的CI与PHP SDK(检查我自己的这个答案),但得到的答复是有效的(任何人都具有与Facebook PHP SDK这个问题,检查@Imbru回答)
嗨!我已经将你的答案标记为已接受,因为尽管我没有检查过,但我确定你是对的。 Codeigniter不使用PHP NATIVE SESSIONS,它发送cookie中的所有数据,因此,当Facebook SDK尝试在SESSION中保存令牌的值时,它不能。 – Chococroc 2014-06-15 08:12:06