首页 文章

从访问令牌获取Facebook用户(PHP SDK 3.0.1)

提问于
浏览
2

我有一个应用程序利用它自己的登录和Facebook登录相结合 . 我使用自己的会话和cookie来记住用户 . 我想记住facebook用户,但没有offline_access,所以我想为facebook用户设置我自己的cookie,当他们返回时只是从facebook获取新的access_token,因为他们已经授权了应用程序 .

当用户第一次登录时我设法做了所有这些,但当他们回来时我检测到一个cookie并且我得到一个有效的新access_token我不能把它放在facebook会话中 . 我使用PHP SDK 3.0.1并且有一个功能

$ this-> fb-> getUserFromAccessToken($ token)

在base_facebook.php里面,但是当我使用它时它只会抛出一个服务器错误 . (fb是我的类,扩展了Facebook类,$ token是有效的新令牌)

我用的时候

$ this-> fb-> getUser()

它只返回0 .

我知道我可以从中获取信息

https://graph.facebook.com/me?access_token=$access_token

但我需要在Facebook会话中以某种方式

另外,base_facebook.php中有一个对我有用的功能

$ this-> fb-> setAccessToken($ access_token);

所以我可以将令牌放在类中并且它可以工作但是当我之后调用getUser()时它仍然返回0

任何帮助表示感谢!

2 回答

  • 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();
    
  • 8

    好吧,我遇到了类似的问题:How to properly handle session and access token with Facebook PHP SDK 3.0?

    你可以在那里看到我如何处理会话 . 由于新的PHP SDK你不知何故无法直接编辑Facebook的会话 . 如果您还通过签名请求或JS SDK获得新的访问令牌,您可以使用与我类似的方法 .

    关于用户丢失信息的问题似乎是用IE iFrame problem来解决的,但是我不太确定我的方法是否也适用于 fb->getUser() .

相关问题