1

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);

...など。すべてのアラートが表示されますが、クエリはデータを返しません。どうしたの?

4

1 に答える 1

0

これが問題かどうかはわかりませんが、ローカルホストでJavaScriptを実行していることを理解するためだけに多くの時間を費やしましたが、Facebookで承認されたURLは別のものであったため、予期しないエラーが発生していました。可能性をすばやく検証して排除するための何か。

于 2012-11-27T10:45:26.567 に答える