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

Javascript 通过PHP SDK登录Facebook,然后使用JS SDK,javascript,php,facebook-graph-api,facebook-javascript-sdk,facebook-php-sdk,Javascript,Php,Facebook Graph Api,Facebook Javascript Sdk,Facebook Php Sdk,我开发了一个应用程序,用户可以通过facebook登录(PHP SDK);现在我也想添加jssdk,因为我想实现一个与jssdk一起工作的通用朋友选择器()。我有两个问题: 1) 混合使用这两个SDK会导致问题吗 2) 我按照文档中的解释添加了JSSDK代码,并尝试了一个简单的请求 FB.api('/me/friends', function(response) { alert(JSON.stringify(response)); }); 但是我得到一个错误(未知错误);我还尝试了一个对

我开发了一个应用程序,用户可以通过facebook登录(PHP SDK);现在我也想添加jssdk,因为我想实现一个与jssdk一起工作的通用朋友选择器()。我有两个问题:

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

2) 我按照文档中的解释添加了JSSDK代码,并尝试了一个简单的请求

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,但是如何传递呢?这个问题似乎正是我所需要的,但我不明白答案:它说将令牌存储在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>
功能测试(){
FB.getLoginStatus(函数(响应){
如果(response.status===“已连接”){
var uid=response.authResponse.userID;
var accessToken=response.authResponse.accessToken;
FB.api('/me/friends',函数(响应){
警报(JSON.stringify(响应));
});
}
});
}

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

哈哈哈,伟大的心灵,你想得一样吗。请在加载页面之前打开一些javascript控制台(firebug、chrome默认控制台、IE默认控制台),并查看您是否收到任何关于域问题的日志消息。告诉我你看到了什么。我仍然无法相信我们的情况有多相似。是的,完全相同的情况:)但在我的情况下,我没有得到任何错误!如果我尝试记录ajax调用的响应,但这两个调用都是在0毫秒内执行的(根据firefox),并且没有响应。对不起,我的意思是我没有收到任何特定错误,就像您的情况一样,调试警报会将“未知错误”作为错误消息显示