我試圖從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