Facebook FQL возвращает значение NaN - PullRequest
0 голосов
/ 15 марта 2012

В этом скрипте

function fql(){
            FB.api('/me', function(response) {
                 var query = FB.Data.query('select uid, name, email from user where uid={0}', response.id);
                 query.wait(function(rows) {

                   document.getElementById('name').innerHTML =
                     'Your name: ' + rows[0].name + "<br />" +
                     + rows[0].email +  "<br />" + rows[0].uid;
                 });
            });
        }    

Функция возвращает имя и изображение, но значение электронной почты равно NaN.Приложение требует основных данных и электронной почты (это было установлено в свойствах приложения / диалоге авторизации), но я не могу получить электронную почту пользователя.Когда я проверил этот запрос в тестовой консоли Facebook, у меня появилось поле электронной почты с правильным значением.

1 Ответ

0 голосов
/ 15 марта 2012

Убедитесь, что в Test Console и на вашем сайте вы используете один и тот же идентификатор приложения и убедитесь, что пользователь предоставил разрешение email вашему приложению!

Это можно сделать с помощью простого вызова API Graph:

FB.api('/me/permissions', function(response){
  if (response && response.data){
    var userPermissions = response.data.shift();
    if (userPermissions.email){
      alert('User is granted email permission');
    } else {
      alert('User is NOT granted email permission');
    }
  } else {
    // No response or results from the Graph API
  }
});

Пара вещей, о которых вы должны знать!

  1. FB.Data.* больше нет! Это устарело,без документов и больше не должен использоваться!Это просто вопрос времени, когда он исчезнет из кода JavaScript SDK ...
  2. Вам просто не нужен дополнительный вызов, чтобы просто определить идентификатор текущего пользователя (в большинстве случаев он у вас уже есть, простоотметьте FB.getUserID()), в FQL используйте me() для ссылки на текущего пользователя.

Перепишите использование FB.Data.* и query.wait с помощью:

FB.api('/fql', {q:'YOUR_FQL_QUERY_HERE'}, function(response){
  var rows = response.data;  
});

В вашем случае те же результаты могут быть получены при вызове Graph API без использования FQL:

FB.api('/me', {fields: 'id,name,email'}, function(response){
  // response -> {id: UID, name: 'User Name', email: 'user@email.dz'}
  console.log(response);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...