Я пытаюсь создать приложение Facebook в Javascript, который позволит мне получить список статуса каждого друга с помощью FQL. Но кажется, что никаких результатов не возвращается из каждого запроса FQL. Вот мой код, слепленный из различных учебных шаблонов:Как получить статус друзей Facebook с помощью Javascript + FQL?
<html>
<title>Testing Facebook Javascript SDK</title>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'MY_APP_ID', // App ID from the App Dashboard
channelUrl: '//www.myurl.net/channel.html',
status : true, // check the login status upon init?
cookie : true, // set sessions cookies to allow your server to access the session?
xfbml : true // parse XFBML tags on this page?
});
// Additional initialization code such as adding Event Listeners goes here
FB.getLoginStatus(function(response){
if (response.status === 'connected'){
showMyFriends();
FB.api('/me/permissions',function(response){
console.log(response);
});
} else if (response.status === 'not_authorized'){
login();
} else {
login();
}
});
};
function login(){
FB.login(function(response){
if (response.authResponse){
alert('login');
} else {
alert('cancelled');
}
},{scope:'read_stream'});
}
function showMyFriends(){
FB.api('/me/friends',function(response){
if(response.data){
var length = response.data.length;
for(var i=0;i<50;i++){
element=response.data[i];
getAFriendStatus(element.id);
}
}
});
}
function getAFriendStatus(friendUID){
FB.api('/fql',{q:{"query1":"select message from status where uid="+friendUID}},
function(response){
console.log(response);
}
);
}
// Load the SDK's source Asynchronously
// Note that the debug version is being actively developed and might
// contain some type checks that are overly strict.
// Please report such bugs using the bugs tool.
(function(d, debug){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "https://connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js";
ref.parentNode.insertBefore(js, ref);
}(document, /*debug*/ false));
</script>
</body>
Когда я проверяю консоль, все я получаю для каждого вызова getAFriendStatus()
является:
Object {data: Array[1]}
data: Array[1]
0: Object
fql_result_set: Array[0]
name: "query1"
__proto__: Object
length: 1
__proto__: Array[0]
__proto__: Object
Поскольку fql_result_set
имеет размер 0 , Я думаю, что есть проблема с моим запросом. Я не думаю, что это проблема разрешения, потому что выход консольного FB.api('/me/permissions')
является:
Object {data: Array[1], paging: Object}
data: Array[1]
0: Object
basic_info: 1
installed: 1
read_stream: 1
Так что я знаю, что у меня есть read_stream
разрешения. Почему я не получаю статусы с этим запросом?
EDIT: Я просто попытался запрос FQL с
"select message from status where uid=me()"
и я получил все мои последние сообщения о статусе. Кажется, что это только проблема получения статусов моих друзей? Может ли это быть связано с настройками конфиденциальности?