4

現在、phonegap を使用して Android でアプリを開発しており、アプリで Facebook を使用したいと考えています。Facebookで「Test」というアプリを作成しました。「テスト」にログインしていないが、Facebook (Android デバイスの Facebook アプリ) にログインして getLoginStatus() 関数を実行すると、unknown代わりに の応答が返されnot_authorizedます。したがって、私の最初の質問はこれが意図されたものですか? の応答をunknown取得するつもりですか、それともこれは phonegap からのエラーですか? の応答を取得するつもりですnot_authorized

2 番目の質問は、"test" という Facebook アプリにログインすると、すべてが正常に実行されることです (Facebook ユーザーが "test" に登録されます)。getLoginStatus() 関数を呼び出すと、問題なく動作し、問題なく接続されていると表示されます。

しかし

Facebook にアクセスして FB アカウントからアプリ "test" を削除してから、Android アプリを再度実行して getLoginStatus() 関数を実行すると、まだアプリ "test" が Facebook アカウントに登録されていると表示されますが、これはありません。ケース!!コードでは、JS SDK によってキャッシュされた結果を使用する代わりに、毎回サーバーを呼び出すようにしていることに注意してください。今私の2番目の質問はです。これは起こることを意図していますか?または、そうでない場合は、Facebook または Phonegap の問題です (Phonegap がキャッシュされた応答を取得し続けるか、Facebook が側を十分に迅速に更新しないかのどちらかですか?)

コードは次のとおりです。

function getLoginStatus() 
      {
          FB.getLoginStatus(function(response) 
          {
            alert(JSON.stringify(response));
            alert(response.status);
            if (response.status == 'connected') 
            {
              alert('logged in');
                FB.api('/me',function (response) {
                    if (response.error)
                    {
                        alert('There is an error');
                    }
                    else
                    {
                        alert(response.name);
                    } 
                });


            }
            else 
            {
              alert('not logged in');
            }
           },true);
      }

どんな反応でも本当に感謝します!!

4

2 に答える 2

4

When I am not logged into "Test" but I am logged into Facebook (Facebook app on the Android device) and run the getLoginStatus() function I get a response of unknown instead of not_authorized.

not_authorized: ユーザーが Facebook にログインしているが、アプリを承認していない場合、not_authorized になります。その人を facebook のホームページに転送すると、その人はユーザー名とパスワードを入力して承認を取り消し、その後あなたは承認されなくなります。男がFacebookにログインしていて、あなたのアプリが承認のために彼をfbにまだ転送していない場合、あなたはまだ承認されていません

https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

不明: ユーザーが facebook にログインしていない場合、不明のステータスになります。

ログインしているため、認証されていません: not_authorized ログインしていません: 不明

If I go into Facebook and remove the app "test" from my FB account

これらの変更が反映されるまでにはしばらく時間がかかると思います。ユーザーが現在のコンテキストでアプリを承認した場合、しばらくの間 (またはログオフするまで) 承認されたままになります。個人的にはこれで問題ないと思います

于 2013-08-03T06:24:29.227 に答える
2

これは phonegap の問題ではありません。unknown関数からの有効な応答の 1 つですgetLoginStatusこの関数の詳細については、 facebook API のドキュメントを参照してください。そこでは、彼らはunknown応答を次のように説明しています。

この時点でユーザーは Facebook にログインしていないため、ユーザーがアプリケーションを認証したかどうかはわかりません (不明)

2 番目の質問に関して、あなたが見ている問題は、既定では、getLoginStatus関数がパフォーマンス上の理由から応答をキャッシュするためです。ただし、ステータスを強制的に更新する方法が提供されます。Forceこれを行うには、2 番目のパラメーターをに渡しますgetLoginStatus

FB.getLoginStatus(function(response) {
  // this will be called when the roundtrip to Facebook has completed
}, true); // The second parameter, called 'force' by default is False. True signifies that you want to force a call to the server so you can see the latest login status.

このパラメーターの詳細についてForceは、上記の API ドキュメント リンクを参照して「Force」パラメーターを検索してください。

ちなみに、2番目の質問にどう答えていいか分からずに回答してしまったので一旦削除してしまいましたが、原因が分かりましたので削除を取り消しました。

于 2013-08-03T03:37:56.657 に答える