JS SDK getLoginStatus doesn't return userID nor signedRequest

别来无恙 提交于 2020-01-02 07:28:50

问题


I'm using PhoneGap/Cordova with the facebook plugin. Everything seems to work except for getLoginStatus who is not working as defined here and here. When called, it returns some data, but not all: it doesn't return userID nor signedRequest. Here is the code:

FB.getLoginStatus(function(response) {
  if (response.status == 'connected') {
    var fb_uid = response.authResponse.userID;
    var fb_signedRequest = response.authResponse.signedRequest;
    alert('logged in');
  } else {
    alert('not logged in');
  }
});

userID is filled with ellipsis (...), while signedRequest is undefined.

I managed to get userID with a graph call to /me:

FB.api('/me', function(me){
  if (me.id) {
    var fb_uid = me.id;
  }
});

I wasn't able to find any way in the documentation to get a signed_request, which I have to use to authenticate the facebook user to a remote service to whom the user already connected to with facebook (I already made a login call so user is OK). Basically the problem is that my call to getLoginStatus returns

{
    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'
    }
}    

instead of what documented


回答1:


As a background, when authentication happens using the plugin then the JavaScript SDK API calls the iOS/Android SDK to handle the authorization and then pass response auth data back to the JS part. The native (iOS/Android) SDKs do not get signed requests back to be able to pass this on to the JS. This is why it's empty.

If you use the latest plugin you should at least now be seeing the user ID. The one from June likely did not pass this back. Otherwise as a work around, you could perform a call to the /me endpoint when authentication is successful in your JS code to get the user id. See the Hackbook example that does this.



来源:https://stackoverflow.com/questions/10928009/js-sdk-getloginstatus-doesnt-return-userid-nor-signedrequest

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!