1

Я пытаюсь получить информацию о пользователе Facebook в веб-приложении, размещенном на Google App Engine.Ошибка получения информации о пользователе Facebook с использованием JavaScript SDK

Настройка: 1. веб-приложение, размещенное на сайте appspot.com по умолчанию из Google. 2. Зарегистрировать приложение Facebook и настроить для «Веб-сайта с помощью Facebook Login».

Я использую FB JavaScript SDK для аутентификации и получения данных с помощью простого кода ниже:

function login(){ 
    FB.getLoginStatus(function(r) { 
     if(r.status === 'connected') { 
       FB.api('/me', function(user) { 
         alert(JSON.stringify(user)); 
        }); 
     }else{ 
      FB.login(function(response) { 
        if(response.authResponse) { 
         alert("Now.... Thats better with FB!"); 
       } else { 
        alert("You should connect to FB."); 
       } 
     }); 
    } 
    }); 
}; 

Но когда я получаю ответ «пользователь» назад от (...) вызов FB.api его следующий JSON:

{"error":{"type":"http", "message":"unknown error"}} 

в мое приложение Facebook, мой "URL сайта" в разделе "Веб-сайт с использованием Facebook Вход" раздел Facebook App Settings указывает на HTTPS-адрес моего приложения GAE. И я не уверен, почему такая ошибка показывает.

Я потратил много времени на поиск через StackOverflow и всю сеть, но не ссылался на это. Может кто-то угодить ... действительно, пожалуйста, помогите! :)

спасибо.

+0

Похоже на синтаксическую ошибку ... проверьте свои скобки. у вас есть дополнительный кронштейн на вашем коде –

+0

@Sam, у вас есть дополнительный кудрявый кронштейн в конце, поэтому удалите вторую последнюю фигурную скобку '}' и проверьте –

+0

Спасибо, ребята. Но эта дополнительная скобка была из-за того, что я ошибочно сократил код, который был коротким для вопроса, и это не проблема. Я обновил полный код сейчас. – Siamak

ответ

2

После некоторого исследования и попытаться/ошибка, я обнаружил, что проблема :) я звоню функцию login() из OnClick события следующим образом:

<a href='' onclick='login();'> 

Теперь диалог Facebook Войти называется в моем login() не возвращался должным образом из-за проблемы (функции?), которая была неизвестна мне до этой даты. Чтобы добавить return false; в конец вызова функции в onclick, убедитесь, что браузер выполняет свое поведение по умолчанию закрытия открытого окна (от которого зависит FB.login, для хранения правильного ключа доступа). Поэтому, поскольку окно не работает должным образом, правильный ключ доступа не сохраняется и не найден FB.api, поэтому вызов завершается с ошибкой. Короче говоря, исправление было таким простым:

<a href='' onclick='login();return false;'> 

Надеюсь, это поможет другим.

Смежные вопросы