FQL Javascript访问令牌

时间:2011-01-29 19:37:22

标签: javascript facebook facebook-graph-api facebook-fql

我对以任何形式使用FQL都很陌生,对不起,如果这是一个简单的问题,但我似乎无法绕过它。

我有这个代码正在尝试获取朋友列表:

var query = FB.Data.query('SELECT '+response.id+', '+response.name+' FROM friendlist from user where uid=' + response.id);

但我不断回复的反应是

  

“必须使用活动访问令牌来查询有关当前用户的信息。”

当我从/ me查询中撤回响应对象时,我会看到我的所有信息,例如位置,名称,工作等。但是我没有看到任何访问令牌

代码开头如下:

window.fbAsyncInit = function() {
            FB.init({appId: '12...0', status: true, cookie: true, xfbml: true});

            /* All the events registered */
            FB.Event.subscribe('auth.login', function(response) {
                // do something with response
                login();
            });
            FB.Event.subscribe('auth.logout', function(response) {
                // do something with response
                logout();
            });

            FB.getLoginStatus(function(response) {
                if (response.session) {
                    // logged in and connected user, someone you know
                    login();
                }
            });

如何获取访问令牌并提供FQL查询?

提前感谢任何建议!

1 个答案:

答案 0 :(得分:4)

用户成功登录后,您必须使用访问令牌才能对Graph API(包括FQL查询)执行所有类型的请求。

如果您使用的是firebug,请在用户登录后执行console.log(response)查看您收到的对象。

 FB.Event.subscribe('auth.login', function(response) {
     console.log(response);   
     // do something with response
     login();
 });

它应包含3个属性:permssessionstatusperms包含一个列表,其中包含用户授予的权限,status它是当前用户的状态。对您来说重要的是session属性。这个也是一个对象,其中包含access_token属性(字符串),您可以使用它来向API发出请求。

因此,您的查询可能如下所示:

var query = FB.Data.query('SELECT '+response.id+', '+response.name+' FROM friendlist from user where uid=' + response.id + '&access_token='+response.session.access_token);

如果您想以更好的方式获取会话,请使用FB.getSession,它将返回当前会话。更多信息here

祝你好运!