2011-11-14 10 views
0

Facebook Javascript SDKを初めて使用しています。このAPIを使用してアプリケーションを作成しようとしています。しかし、FB.apiメソッドを使用している間は大変です。何とかFB.apiメソッドが毎回正しく動作していません。ときには、応答(私はちょうどresponse.nameにアクセスしている)を与え、それ以外の時間には適切に呼び出されません。ボタンのような毎回FB.apiが動作しない

window.fbAsyncInit = function() { 
FB.init({ 
    appId  : 'my_app_id', // App ID 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    oauth  : true, // enable OAuth 2.0 
    xfbml  : true // parse XFBML 
}); 
FB.getLoginStatus(function(response) { 
    if (response.authResponse) { 
    alert('user is:'+response.status); 
    userId = response.authResponse.userID; 
    FB.api('/me',function(response) { 
    alert('Inside FB.api function'); 
    document.getElementById("userInfo").innerHTML = 'Welcome <img src="https://graph.facebook.com/'+ response.id + '/picture" style="margin-right:5px"/>' +response.name + '!'; 
    }); 
    } 
}); 
}; 

他の方法FB.uiとFB.getLoginStatusとFacebookは期待通りに働いているが、唯一FB.apiは、他の人とシームレスに作業されていません。どうしてですか?問題を特定するのを手伝ってください。

+0

:/人々が簡単に読むことができるようにあなたの投稿をフォーマットしてください... – Lix

+0

FB.api( '/ me') 'を呼び出すと、どのようなエラーが発生しますか? – Lix

答えて

0

そのコードは問題なく機能しますが、レスポンス変数の名前を変更してみてください。 FB.apiコールバックの中には、実際に問題を引き起こす2つの応答変数があります。それらを変更して、異なる結果が得られるかどうか確認してください。

FB.getLoginStatus(function(loginResponse) { 
    if (loginResponse.authResponse) { 
    alert('user is:'+loginResponse.status); 
    userId = loginResponse.authResponse.userID; 
    FB.api('/me',function(apiResponse) { 
    alert('Inside FB.api function'); 
    document.getElementById("userInfo").innerHTML = 'Welcome <img src="https://graph.facebook.com/'+ apiResponse.id + '/picture" style="margin-right:5px"/>' +apiResponse.name + '!'; 
    }); 
    } 
}); 

可能性として、あなたのページにこれに影響を及ぼすことがあります。あなたのページへのリンクはありますか?

+0

返事をありがとう、アビー。私は応答変数を編集し、あなたに教えようとします。私は現在、アプリケーションをローカルで開発中です。 –

+0

まだ運がありません。変数名を変更しようとしましたが、スクリプトは同じように動作しています。 –

+0

失敗したときに実際に何が起こっていますか?エラーメッセージが表示されますか?あなたはそのページへのリンクを持っていますか? – Abby

2

私はまったく同じ問題を抱えていました。この答えは正しい方向に私を指摘:

FB.api does not work when called right after FB.init

私が正しいイベントをサブスクライブしていた私の問題を解決するために。私のケースでは、私は同じ問題を抱えていたFB.init

FB.Event.subscribe('auth.authResponseChange', function(){ 
    FB.api('/me',function(r){ 
    console.log(r.id); 
    if (!r || r.error) { 
     alert('Error occured'); 
     } else { 
     alert(r.name); 
     }   
    }); 
}); 
+0

何か他にも気付きました。呼び出す前にDOMを変更すると、FB.apiは失敗します。 –

0

後の「auth.authResponseChange」でした。 FB.apiは、私のアプリのある時点で静かに作業を停止しました。私はそれがDOM操作のためであることに気づいた:

<div id="fb-root"></div> 

重複または何か。その点を確認する必要があります。それはJohan Strydomの問題のようです。

関連する問題