繁体   English   中英

通过PHP SDK登录Facebook,然后使用JS SDK

[英]Facebook Login via PHP SDK, then use JS SDK

我已经开发了一个应用程序,用户可以通过Facebook(PHP SDK)登录; 现在,我也想添加JS SDK,因为我想实现一个与JS SDK一起使用的通用好友选择器( http://facebook-friend-selector.codersgrave.com/ )。 我有两个问题:

1)混合使用两个SDK会导致问题吗?

2)我按照文档中的说明添加了JS SDK代码,并尝试了一个简单的请求

FB.api('/me/friends', function(response) {
   alert(JSON.stringify(response));
});

但是我得到一个错误(未知错误); 我也尝试了一个对话框

FB.ui({
  method: 'feed',
  link: 'https://developers.facebook.com/docs/dialogs/',
  caption: 'An example caption',
}, function(response){});

但是该框出现了,突然消失了。 我认为问题与身份验证有关...我想,由于我的用户是通过PHP进行身份验证的,因此我需要将访问令牌传递给JS,但是怎么办? 这个问题将Facebook授权令牌从PHP传递到Javascript似乎正是我所需要的,但我不明白答案:它说将令牌存储在cookie中,但是JS如何知道它,cookie应该使用哪个名称有? 最后,如果我做类似的事情

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    alert('connected');
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
  }
 });

我实际上收到了“已连接”警报,这意味着JS知道用户已登录,即使该登录是通过PHP进行的,那么问题出在哪里呢?

解决了。 我的代码包含两个愚蠢的错误,这是正确的代码:

function test(){
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;

            FB.api('/me/friends', function(response) {
                alert(JSON.stringify(response));
            });
        }
    });
}

<a href="" onclick="test();return false;">Test</a>

在第一个版本中,对friends方法的调用在getLoginStatus方法之外,因此在设置变量accesToken之前调用了它,此外,在test()调用之后,我还没有“ return false”语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM