3

FacebookプラグインでPhoneGap/Cordovaを使用しています。hereおよびhereの定義どおりに機能していない getLoginStatus を除いて、すべてが機能しているようです。呼び出されると、一部のデータが返されますが、すべてではありません。userID も signedRequest も返されません。コードは次のとおりです。

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 は省略記号 (...) で埋められますが、signedRequest は未定義です。

/me へのグラフ呼び出しで userID を取得できました。

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

ユーザーが既にfacebookで接続しているリモートサービスにfacebookユーザーを認証するために使用する必要があるsigned_requestを取得する方法をドキュメントで見つけることができませんでした(すでにログインコールを行ったので、ユーザーはわかった)。基本的に問題は、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'
    }
}    

文書化されたものの代わりに

4

1 に答える 1

0

背景として、プラグインを使用して認証が行われると、JavaScript SDK API が iOS/Android SDK を呼び出して承認を処理し、応答認証データを JS 部分に戻します。ネイティブ (iOS/Android) SDK は、署名されたリクエストを返して、これを JS に渡すことができません。これが空っぽの理由です。

最新のプラグインを使用している場合、少なくともユーザー ID が表示されるはずです。6 月のものはおそらくこれを返しませんでした。それ以外の回避策として、JS コードで認証が成功したときに /me エンドポイントへの呼び出しを実行して、ユーザー ID を取得することができます。これを行う Hackbook の例を参照してください。

于 2012-10-24T12:21:26.643 に答える