簡體   English   中英

從訪問令牌獲取Facebook用戶(PHP SDK 3.0.1)

[英]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.

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