【问题标题】:Getting Facebook user from access token (PHP SDK 3.0.1)从访问令牌获取 Facebook 用户(PHP SDK 3.0.1)
【发布时间】:2011-09-19 16:38:34
【问题描述】:

我有一个应用程序,它结合了自己的登录和 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

任何帮助表示赞赏 谢谢!

【问题讨论】:

  • 谢谢你:https://graph.facebook.com/me?access_token=$access_token 我刚刚手动卷曲了这个端点。

标签: php facebook api sdk


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    嗯,我也有类似的问题:How to properly handle session and access token with Facebook PHP SDK 3.0?

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多