[英]Getting Facebook user from access token (PHP SDK 3.0.1)
我有一個應用程序利用它自己的登錄和Facebook登錄相結合。 我使用自己的會話和cookie來記住用戶。 我想記住facebook用戶,但沒有offline_access,所以我想為facebook用戶設置我自己的cookie,當他們返回時只是從facebook獲取新的access_token,因為他們已經授權了應用程序。
當用戶第一次登錄時我設法做了所有這些,但當他們回來時我檢測到一個cookie並且我得到一個有效的新access_token我不能把它放在facebook會話中。 我使用PHP SDK 3.0.1並且有一個功能
$這個 - > FB-> getUserFromAccessToken($令牌)
在base_facebook.php里面,但是當我使用它時它只會拋出一個服務器錯誤。 (fb是我的類,擴展了Facebook類,$ token是有效的新令牌)
我用的時候
$這個 - > FB->的getUser()
它只返回0。
我知道我可以從中獲取信息
https://graph.facebook.com/me?access_token= $ access_token
但我需要在Facebook會話中以某種方式
另外,base_facebook.php中有一個對我有用的功能
$這 - > FB-> setAccessToken($的access_token);
所以我可以將令牌放在類中並且它可以工作但是當我之后調用getUser()時它仍然返回0
任何幫助表示感謝!
getUserFromAccessToken()函數不帶任何參數。 該函數從已設置的訪問令牌返回用戶ID。 getUserFromAccessToken()的函數定義如下所示。
protected function getUserFromAccessToken() {
try {
$user_info = $this->api('/me');
return $user_info['id'];
} catch (FacebookApiException $e) {
return 0;
}
}
如果您希望從訪問令牌中找出用戶ID,您需要先設置訪問令牌,然后調用函數getUser()。 代碼如下所示。
$facebook->setAccessToken($access_token);
$user_id = $facebook->getUser();
好吧,我遇到了類似的問題: 如何使用Facebook PHP SDK 3.0正確處理會話和訪問令牌?
你可以在那里看到我如何處理會話。 由於新的PHP SDK你不知何故無法直接編輯Facebook的會話。 如果您還通過簽名請求或JS SDK獲得新的訪問令牌,您可以使用與我類似的方法。
關於用戶丟失信息的問題似乎是通過IE iFrame問題解決的 ,但我不太確定我的方法是否也適用於fb->getUser()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.