Facebook使用facebook-> getUser()和FB.getUserID()登录

时间:2013-03-16 23:53:04

标签: facebook facebook-javascript-sdk facebook-php-sdk

对于我的网站,我使用Facebook登录。使用$facebook->getUser()功能,我可以将用户从登录页面(主页)重定向到您登录时看到的第一页。

$facebook->getUser()的结果为0或用户ID。此值似乎存储在域Cookie中(不是会话Cookie,因此在浏览器完全关闭并重新打开时不会删除它)。这是完全使用,因为我的页面不必与Facebook连接以了解用户的ID。

然而,用户可以删除它的所有Cookie,从而让$facebook->getUser()函数返回0,尽管用户已经接受了应用程序(可以在https://www.facebook.com/settings?tab=applications中找到)

我也尝试使用以下内容:

$accessToken = $this->facebook->getAccessToken();
$facebook->api('/me?access_token=' . $accessToken, 'GET');

然而,这一直给我错误An active access token must be used to query information about the current user$this->facebook->getAccessToken()会从用户提交的应用中返回AccessToken,因此这无助于eighter:(

现在我的页面不知道用户已经与facebook连接,因此它会打开登录页面。此处//connect.facebook.net/en_US/all.js已加载,我可以发出FB.getUserID()请求。

现在问题和奇怪的部分:

完成window.fbAsyncInit功能并且异步加载SDK

 (function(d){
 var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;
 js.src = '//connect.facebook.net/en_US/all.js';
 d.getElementsByTagName('head')[0].appendChild(js); }(document));

我运行FB.getUserID()。这返回Nothing。但是大约100-700毫秒之后它会返回fb-id(如果我再次请求它)。所以 Javascript以某种方式从Facebook获得了我的fb-id 而没有使用我的域名cookies

当我从Chrome使用Inspector并打开网络时,我可以看到在应该加载并完成所有内容之后,正在请求并加载页面xd_arbiter.php?version=19 (static.ak.facebook.com/connect)oauth?client_id=***&response_type=*** (www.facebook.com/dialog)

的计数相同

这个javascript请求似乎可以从Facebook获取fb-id。

我希望能够使用PHP执行此操作,因此用户不必在大约1或2秒内看到登录页面。

我希望我解释得很好,如果不是,请求清楚。我非常想解决这个问题! =)

0 个答案:

没有答案