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은 여전히 사용자 상태를 확인해야합니다. 페이스 북은 파견 페이지가 있다는 것을 모릅니다. –