2011-01-29 6 views
0

Я довольно новичок в использовании FQL в любой форме, извините, если это простой вопрос, но я не могу обойти его.FQL Javascript Access Token

У меня есть этот код, который пытается получить список друзей:

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

Но ответ я получаю Спинку

«Активный маркер доступа должен использоваться для запроса информации о текущий пользователь."

Когда я оттянуть объект ответа от/мне запроса я вижу всю информацию, такие как местоположение, имя, работа и т.д. Но я не вижу никаких маркера доступа

код начинается как это:

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?

Спасибо за любой совет раньше времени!

ответ

4

Маркер доступа, который вы должны использовать для того, чтобы сделать все типы запросов к Graph API (включая FQL запросов) дается Facebook после того, как пользователь succesfuly авторизованы.

Если вы используете поджигатель сделайте console.log(response) после входа пользователя в систему, чтобы увидеть объект, который вы получили.

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

Он должен содержать 3 свойства: perms, session и status. perms содержит список с разрешениями, предоставленными пользователем, 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.

Удачи вам!

+0

Wow благодарит за отличное объяснение! –

+0

приветствую :) – misterjinx