FQL クエリに問題があります。関連トピックをすべて読みましたが、エラーが見つかりません。私の Facebook アプリには、メール、user_birthday、user_likes、read_stream という権限があります。ユーザーが自分のページを気に入った場合に取得したい関数内で、クエリが結果を返さない! 同じクエリが Graph API エクスプローラーでテストされ、結果が得られました。これは機能です:
function getUserInfo(accessToken) {
FB.api('/me', function (response) {
var user_id = response.id;
var page_id = "40796308305"; //page id for like
var fql_query = "SELECT uid FROM page_fan WHERE page_id = " + page_id + "and uid=" + user_id; // +"&access_token=" + accessToken.toString();
var the_query = FB.Data.query(fql_query);
alert(fql_query);
// 最初の方法
FB.api({
method: 'fql.query',
query: fql_query,
access_token: accessToken
}, function (resp) {
alert(resp);
if (resp.length) {
alert('A fan!');
$("#container_like").show();
$("#container_notlike").hide();
document.getElementById('displayname').innerHTML = response.name;
document.getElementById('FBId').innerHTML = response.id;
} else {
alert('Not a fan!');
$("#container_notlike").show();
$("#container_like").hide();
}
}
);
// 第 2 の方法
the_query.wait(function (rows) {
if (rows.length == 1 && rows[0].uid == user_id) {
alert('A fan!');
$("#container_like").show();
$("#container_notlike").hide();
document.getElementById('displayname').innerHTML = response.name;
document.getElementById('FBId').innerHTML = response.id;
} else {
alert('NOT a fan!');
$("#container_notlike").show();
$("#container_like").hide();
}
});
});
}
accessToken は、fql_query 内の 2 番目の方法で使用されます (現在コメントされています)。コードから取得します:
FB.getLoginStatus(function (response) {
if (response.status === 'connected') {
var accessToken = response.authResponse.accessToken;
getUserInfo(accessToken);
...など。すべてのアラートが表示されますが、クエリはデータを返しません。どうしたの?