![](/img/trans.png)
[英]twitter api tmhOAuth is not working oauth/access_token
[英]Facebook API: /oauth/access_token not working
我正在嘗試使用PHP-SDK從Facebook獲取用戶訪問令牌。 服務器端登錄過程非常有效,重定向到正確的頁面並提供$code
。
在重定向(並檢查$code
是否存在)之后,我調用以下API方法來交換用戶令牌的$code
(此處禁止API參數):
$fb->api('/oauth/access_token',array(
'client_id' => APP_ID,
'client_secret' => APP_SECRET,
'redirect_uri' => REDIRECT_URI,
'code' => $code
));
$fb_token = $fb->getAccessToken();
echo $fb_token;
不幸的是,我從這個腳本得到的只是app令牌。 實際上,將腳本簡化為以下內容沒有任何區別:
$fb_token_user = $fb->getAccessToken();
echo $fb_token_user;
所以我假設它完全是關於/oauth/access_token
調用,由於某種原因它不起作用或至少沒有動作。 它也不會返回任何錯誤。
我已經嘗試並測試了幾種替代方法,例如Facebook教程中建議的get_file_contents()
方法,以及向上述API調用添加其他參數(例如type=client_cred
等),但從未成功。
有人知道為什么API調用不起作用嗎? 它是腳本還是Facebook上的某個應用程序設置?
提前致謝!
解決了! 問題中的代碼仍然沒有工作,盡管有這么多線程和其他社區說明它(奇怪的是,它似乎適用於他們 )。
所以我想我必須回到Facebook解釋的file_get_contents()
方法,事實證明這種方法之前沒有用,因為我的服務器上禁用了allow_url_fopen
。 我不想承擔啟用它的風險,我發現cURL是一種解決方法。
這是工作代碼:
// cURL Load Function
function cURLget ($ch_url) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$ch_url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
$ch_send = curl_exec($ch);
curl_close($ch);
return $ch_send;
};
// Obtain User Token
$fb_token_get = cURLget("https://graph.facebook.com/oauth/access_token"
. "?client_id=" . APP_ID
. "&client_secret=". APP_SECRET
. "&redirect_uri=" . urlencode(REDIRECT_URI)
. "&code=" . $CODE
);
$fb_token_params = null;
parse_str($fb_token_get,$fb_token_params);
// Print Token Data
echo "Token: " . $fb_token_params['access_token']
. "<br />Expires: " . $fb_token_params['expires'];
感謝@FabioAntunes嘗試幫助我使用原始代碼,感謝@ShawnECarter獲取cURL加載函數的腳本 。
今天偶然發現了這個問題。 似乎我的PHP SDK(v.3.2.2)提供了一個解決問題的函數:setExtendedAccessToken()。 (幾乎完全相同的事情:調用圖形的“/ oauth / access_token”並將舊標記與“長壽”標記交換)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.