Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用FB.api在Javascript中查询事件和好友事件_Javascript_Facebook Graph Api_Facebook Fql - Fatal编程技术网

使用FB.api在Javascript中查询事件和好友事件

使用FB.api在Javascript中查询事件和好友事件,javascript,facebook-graph-api,facebook-fql,Javascript,Facebook Graph Api,Facebook Fql,我正在编写一个小应用程序,在用户登录Facebook后,运行查询并在控制台中显示结果,我遇到了问题: 首先,我进行登录操作: FB.Event.subscribe('auth.authResponseChange', function(response) { if (response.status === 'connected') { var accesstoken=response; getSomeEvents(accesstok

我正在编写一个小应用程序,在用户登录Facebook后,运行查询并在控制台中显示结果,我遇到了问题:

首先,我进行登录操作:

FB.Event.subscribe('auth.authResponseChange', function(response) {
        if (response.status === 'connected') {
            var accesstoken=response;
            getSomeEvents(accesstoken);
        } else if (response.status === 'not_authorized') {
            FB.login(function(response){
            }, {scope: 'email,user_likes, user_events, friends_events'});

        } else {
            FB.login(function(response){
            }, {scope: 'email,user_likes, user_events, friends_events'});
        }
    });
};
然后,我尝试使用Graph API查询FB。下面,我将简化查询以使问题更清楚

function getSomeEvents(accesstoken){
  var query2=encodeURI("SELECT name, eid, venue, location FROM event WHERE eid=364689750343572 & access_token="+accesstoken.authResponse.accessToken);

    //Method 1: Querying with the graph API
    FB.api('/fql?q='+query2, function(events) {
        console.log('In Method 1 - Updated Graph API - event-name is ' + events.name + '.');
    });
   }
chrome调试器告诉我:您的语句是不可索引的。WHERE子句必须包含可索引列。这些列在从…链接的表中用*标记

但是,EID可根据以下条件进行索引:

此外,如果我将查询替换为我实际尝试执行的操作:

var query2=encodeURI("SELECT name, eid, venue, location FROM event WHERE eid in ( SELECT eid FROM event_member WHERE uid in (SELECT uid2 FROM friend WHERE uid1 = me()) ) limit 100 & access_token="+accesstoken.authResponse.accessToken);
我在chrome调试器中得到这个消息:601解析器错误:查询意外结束。;类型:OAutheException

这两个查询都在Facebooks Graph API控制台中工作,当直接在浏览器中键入GET请求时返回数据


你知道我做错了什么吗?

你不需要accesstoken来获取事件的详细信息

我不知道你为什么会遇到这个问题,我想这是一个编码错误。无论如何,这是可行的:

var query2="SELECT name, eid, venue, location FROM event WHERE eid=364689750343572";

FB.api('/fql',{ q: query2}, function(response) {

        console.log(response.data)
        console.log('In Method 2 - Updated Graph API - event-name is ' + response.data[0].name + '.');
    });     
}
记住,结果是在response.data下返回的,这些结果是一个数组

PS您可以不使用FQL直接获取事件信息:

FB.api('/364689750343572/', function(response) {            
console.log('In Method 1 - Updated Graph API - event-name is ' + response.name + '.');
});        
}
资料来源: