0

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

1)可以混合两个SDK导致问题?

2)I添加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,但是怎么做?这个问题Passing the Facebook Authorization Token from PHP to 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,那么问题出在哪里?

+0

哈哈哈,伟大的想法都一样吗? http://stackoverflow.com/questions/20785993/given-url-is-not-permitted-by-app-setting-with-js-sdk-but-not-with-loginurl-fr。请在加载页面之前打开一些javascript控制台(firebug,chrome默认控制台,IE默认控制台),然后查看您是否收到有关域问题的日志消息。告诉我你看到了什么。我仍然无法相信我们的情况有多相似。 – Letterman

+0

是的,情况完全一样:)但在我的情况下,我没有得到任何错误! 如果我尝试记录答案的ajax调用 https://www.facebook.com/dialog/feed和https://graph.facebook.com/me/friends都执行在0毫秒(根据Firefox)没有答案。 – Eugenio

+0

对不起,我的意思是我没有得到任何特定的错误,就像你的情况一样,调试警报显示“未知错误”为错误信息 – Eugenio

回答

0

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

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> 

在第一个版本的调用朋友方法是getLoginStatus方法之外,因此它设置的变量accesToken之前调用,另外,我还在test()调用之后返回“false false”语句。