Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook JS SDK getLoginStatus不';t返回userID或signedRequest_Facebook_Cordova_Facebook Javascript Sdk - Fatal编程技术网

Facebook JS SDK getLoginStatus不';t返回userID或signedRequest

Facebook JS SDK getLoginStatus不';t返回userID或signedRequest,facebook,cordova,facebook-javascript-sdk,Facebook,Cordova,Facebook Javascript Sdk,我在facebook插件中使用PhoneGap/Cordova。除了getLoginStatus没有按照定义和定义工作之外,其他一切似乎都正常工作。调用时,它返回一些数据,但不是全部:它不返回userID或signedRequest。 代码如下: FB.getLoginStatus(函数(响应){ 如果(response.status==“已连接”){ var fb_uid=response.authResponse.userID; var fb_signedRequest=response.a

我在facebook插件中使用PhoneGap/Cordova。除了getLoginStatus没有按照定义和定义工作之外,其他一切似乎都正常工作。调用时,它返回一些数据,但不是全部:它不返回userID或signedRequest。 代码如下:

FB.getLoginStatus(函数(响应){
如果(response.status==“已连接”){
var fb_uid=response.authResponse.userID;
var fb_signedRequest=response.authResponse.signedRequest;
警报(“已登录”);
}否则{
警报(“未登录”);
}
});
userID用省略号(…)填充,而signedRequest未定义

我通过对/me的图形调用获得了userID:

FB.api('/me',函数(me){
如果(我的身份证){
var fb_uid=me.id;
}
});
我在文档中找不到任何方法来获取签名的_请求,我必须使用该请求来验证facebook用户到远程服务的身份,该用户已经通过facebook连接到该远程服务(我已经进行了登录呼叫,所以用户可以)。 基本上,问题是我对getLoginStatus的调用返回

{
    status: 'connected',
    authResponse: {
        session_key: true,
        accessToken: 'a long string...',
        expiresIn:'a number',
        sig: '...',   //exactly this string
        userID:'...'  //exactly this string
        secret:'...'  //exactly this string
        expirationTime:'a long number'
    }
}    

当使用插件进行身份验证时,JavaScript SDK API调用iOS/Android SDK来处理授权,然后将响应auth数据传递回JS部分,而不是作为后台记录的内容。本机(iOS/Android)SDK无法将已签名的请求返回以将其传递给JS。这就是为什么它是空的


如果你使用的是最新的插件,你至少现在可以看到用户ID了。6月份的那个插件可能没有把这个信息传回去。否则,作为一种解决方法,当JS代码中的身份验证成功时,您可以执行对/me端点的调用以获取用户id。请参阅执行此操作的Hackbook示例。

您需要签名请求做什么?很有趣。很明显,auth的响应有很大的问题,问题是它在哪里搞砸了。。你能使用网络嗅探器来检查facebook的响应吗?Austinalover:我需要签名的请求来将其传递给我的web服务,以便在那里创建本地用户。如果我不使用签名请求,我就无法使用PHPSDK在服务器上检查用户是否真的想要连接到我的应用程序。但问题是,如果FB应该返回userID或signedRequest,为什么它不返回呢?尼赞:不,我不能使用嗅探器,因为这个应用程序是在iPhone上运行的。但是JS SDK解释了响应,所以他们应该自己搞乱事情,这可能是真的……似乎这可能只是一个与PhoneGap/Cordova有关的问题:Nitzan,你给我的方向是正确的:Facebook JS SDK与Cordova插件提供的SDK的静态版本不同。所以facebook的回答可能是正确的,但提供的sdk无法处理它。。。