Диалог разрешения Facebook (JavaScript SDK) - PullRequest
2 голосов
/ 21 октября 2011

Я использую разрешение OAuth Dialog for Facebook для доступа к электронной почте пользователя, дню рождения и другим деталям, но когда я запускаю URL этого приложения, который является https://apps.facebook.com/projectatestapp/ (при входе в Facebook), я вижу это окно входа в приложение, которое говорит :

Вы входите в testapp под именем Нина Сьюарт. Вход в систему не добавит активность этого приложения в Facebook.

С кнопкой входа и отмены instead of Permission window with Allow and Don't Allow button

вот мой код

<html xmlns:fb="https://www.facebook.com/2008/fbml">
<body>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <div id="fb-root"></div>
    <script>
        FB.init({ 
            appId: '[My app id]', 
            xfbml: true, 
            cookie: true,
            oauth: true
        });

        FB.login({
            scope: 'email,user_birthday',
        });
    </script>

    <a href="https://www.facebook.com/dialog/oauth/?scope=email,
        user_birthday&
        client_id=148244388606048&
        redirect_uri=https://apps.facebook.com/projectatestapp/test2.html&
        response_type=token" target="_top">test</a>
</body>
</html>

Пожалуйста, скажите мне, что в этом плохого?

Ответы [ 4 ]

1 голос
/ 24 октября 2011

Причина, по которой вы этого не видите, заключается в том, что процесс подачи заявления стал двухступенчатым процессом.

  1. То, что человек принимает вход в ваше приложение.
  2. Будучи человеком, примите ваше расширенное разрешение, и именно здесь URL-адрес обратного вызова вступает в игру.

Документация может быть найдена здесь .

Итак, причина, по которой ваш обратный вызов не вызывается, заключается в том, что процесс состоит из двух этапов. Я бы предложил сделать ответ на второй странице, которая называется.

Я не уверен, как работает JS SDK, но именно так мне удалось это сделать.

Гудлак.

0 голосов
/ 08 февраля 2013

Я боролся с этой проблемой в течение нескольких часов, и мой милый коллега помог мне исправить это только сейчас. Убедитесь, что вы не обновляете страницу после входа в систему. По сути, не делайте что-то вроде ниже:

FB.login(...);
window.location.refresh();

Включите код обновления внутри обратного вызова для FB.login!

Чувак, я чувствую себя так глупо, но иногда вы путаетесь и забываете, как работают обратные вызовы с точки зрения порядка выполнения кода.

0 голосов
/ 14 ноября 2011

У меня здесь такие же проблемы. В документации говорится, что только разработчики / тестеры этого приложения смогут получить разрешение на публикацию, но мне удалось заставить его работать только с идентификатором, который использовался для создания приложения. Другие тестовые пользователи (хотя и являются авторизованными разработчиками) не могут пройти стадию добавления к временной шкале.

Это может быть серьезной ошибкой.

0 голосов
/ 21 октября 2011

Вам нужно перед вызовом окна авторизации добавить токен fb в URL, чтобы идентифицировать вашего пользователя в fb.

Я думаю, попробуйте это, чтобы получить токен: FB.getAccessToken ();

...