Facebook JS SDK getLoginStatus不';t返回userID或signedRequest
我在facebook插件中使用PhoneGap/Cordova。除了getLoginStatus没有按照定义和定义工作之外,其他一切似乎都正常工作。调用时,它返回一些数据,但不是全部:它不返回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
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无法处理它。。。