1

Google App Engine でホストされている Web アプリで Facebook ユーザー情報を取得しようとしています。

セットアップは次のとおりです。 1. Google のデフォルトの appspot.com でホストされる Web アプリ。2. Facebook アプリを登録し、「Facebook ログインのある Web サイト」用に構成します。

FB JavaScript SDK を使用して、以下の簡単なコードでデータを認証および取得しています。

function login(){
    FB.getLoginStatus(function(r) {
         if(r.status === 'connected') {
                FB.api('/me', function(user) {
                      alert(JSON.stringify(user));
                  });
         }else{
            FB.login(function(response) {
                    if(response.authResponse) {
                        alert("Now.... Thats better with FB!");
                } else {
                    alert("You should connect to FB.");
                }
         });
     }
    });
};

しかし、FB.api(...) 呼び出しから「ユーザー」応答を取得すると、次の JSON になります。

{"error":{"type":"http", "message":"unknown error"}}

Facebook アプリで、Facebook アプリ設定の「Facebook ログインのある Web サイト」セクションの「サイト URL」が、GAE アプリの https アドレスを指しています。なぜそのようなエラーが表示されるのかわかりません。

StackOverflow と Web 全体を検索するのに多くの時間を費やしましたが、これへの参照はありません。誰かお願いします...本当にお願いします、助けてください!:)

ありがとうございました。

4

1 に答える 1

2

かなりの調査と試行錯誤の後、問題が何であるかがわかりました:)login()次のようにonclickイベントから関数を呼び出していました:

<a href='' onclick='login();'>

login() で呼び出された Facebook ログイン ダイアログが、問題 (機能?) が原因で正しく返されませんでした。onclick の関数呼び出しの最後に追加return false;して、ブラウザーが開いているウィンドウを閉じるという既定の動作を実行するようにする必要があります (適切なアクセス キーを保存するために FB.login が依存します)。したがって、ウィンドウが適切に動作しないため、適切なアクセス キーが保存されず、FB.api によって検出されず、呼び出しが失敗します。簡単に言えば、修正は次のように簡単でした。

<a href='' onclick='login();return false;'>

これが他の人に役立つことを願っています。

于 2013-04-18T21:58:14.550 に答える