getAccessToken返回应用程序访问令牌而不是用户访问令牌

时间:2012-10-31 11:39:47

标签: php facebook facebook-php-sdk facebook-access-token

首先我得到“登录网址”:

if (!$facebook->getUser())
{
    $login_url = $facebook->getLoginUrl(array(
        'scope' => 'publish_stream' 
    ));
}

并重定向到它,如果用户没有登录它请求他登录, 如果用户需要授权应用程序,它也会请求他也这样做。

问题是用户授权App并重定向到我的redirect_uri后, 我仍然可以获取他的令牌以获取有关他的信息。 这样:

$facebook->getAccessToken()

返回App访问令牌(管道位于中间的那个) 还有这个:     $ facebook->的getUser() 返回0。 并且以无限循环结束,请求登录URL(第一次请求授权我的APP)重定向到我的redirect_uri再次请求它     $ facebook->的getUser() 返回0。

有趣的是: 当我在其他服务器(位于世界其他地方)使用此代码时,它可以工作。 当我在其他服务器上(甚至在世界上的其他位置)尝试此操作时,它只有60%的时间可用。

问题出在哪里?在我的代码?在我的服务器?在Facebook?

谢谢!!!

2 个答案:

答案 0 :(得分:1)

请尝试使用$facebook->getAccessTokenFromCode($_GET['code'])

答案 1 :(得分:0)

我也有时遇到过这个问题。结果发现,在那些时候我使用Facebook作为同一个应用程序的页面,而不是使用我常用的配置文件。因此,无论何时遇到此问题,您都可以检查确保您将Facebook用作用户个人资料而不是任何页面

我希望这至少可以为将来的某些人带来一些挫败感,所以尽管你的问题已经解决了,但仍然可以解答。