簡體   English   中英

Facebook API:/ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM