FB.initの直後に呼び出されたときにFB.apiが機能しません。 )((FB.initの直後に呼び出されたときにFB.apiが機能しない
window.fbAsyncInit = function() {
FB.init({
appId : window.APP_ID,
status : true,
cookie : true,
oauth : true,
channelUrl : window.MASTER_URL + "channel",
frictionlessRequests : true
});
window.COMPANY.init();
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
そして、ここでは私のCOMPANY.initある)とCOMPANY.fetchAllFriends::ここで私が使用したコードスニペットはある
fetchAllFriends応答で「アクティブなアクセスを言うエラーが含まれていfriends: new Array(),
init : function() {
// TODO
COMPANY.fetchAllFriends();
FB.Canvas.setSize($(document).height());
FB.Canvas.setAutoGrow();
},
fetchAllFriends : function() {
FB.api('/me/friends', function(response) {
if (!response || response.error) {
return;
}
COMPANY.friends = new Array();
$.each(response.data, function(index, value) {
COMPANY.friends.push(value.id);
});
});
},
トークンを使用して現在のユーザーに関する情報を照会する必要があります。 "私はFB.apiの呼び出しの前にFB.initが呼び出されていることを(ブラウザのデバッガを介して)確認しました。
ご協力いただければ幸いです!
FB.getLoginStatusを明示的に呼び出すか、呼び出しにトークンを置くことなく、ページがロードされた後に呼び出されたときに 'fetchAllFriends'メソッド(上記で定義)が完全に機能する理由については説明しません。 .. –
私のアプリはFacebookキャンバスページに埋め込まれており、ユーザーを認証するディスパッチページの背後にあるので、上記のメソッドが呼び出された時点で、ユーザーがFacebookにログインしていることが確認されます。 –
私はまだgetLoginStatusを呼び出し、必要なものをその関数のコールバックで実行することをお勧めします。それはすべてが準備ができていることを保証します。しかし、それをしたくない場合は、FB.Event.subscribeを使用することをお勧めします。おそらくauth.statusChangeを購読しています。ディスパッチページを持っているにもかかわらず、Facebookは依然としてユーザーステータスを確認する必要があります。 Facebookはディスパッチ・ページがあることを知らない。 –