Не удается заставить FB.ui Method:oauth работать

Я боролся с этим все утро.

На самом деле я пытаюсь заставить работать пользовательские действия Open Graph. Я преуспел в этом, собирая кусочки информации здесь, там и повсюду, и теперь у меня есть кнопка, которая публикует действие «Хочу» со следующим потоком:

> User Clicks Button
> FB.api checks response.
    > if response code is 200 the user has not granted publish_stream permission
        > call FB.ui({ method:
                  "permissions.request",
                  "perms": 'email,publish_stream'
                }
        > call back to original function and post to stream
    > if user has already granted permission, then just publish

Это все прекрасно работает.

Что мне нужно, так это поймать случай, когда пользователь вообще не вошел в Facebook.

Похоже, что это код ответа 2500, где нет маркера доступа.

Итак, у меня есть этот фрагмент кода, который улавливает этот случай

.....
} else if (((response.error.code) * 1) == 2500) {
    doLogin('publish_stream', postWant, itemId); 
    // post want being the original function and itemId being the item we are "wanting"
}

моя функция doLogin выглядит так:

    function doLogin(permRequired, callingFunction, urlAppend) {
        FB.ui({ 
            method: 'oauth', 
            scope: 'email,' + permRequired
        },
        function (response) {
            // DO THINGS NOW WE'RE LOGGED IN
        });
    };

Это в основном то же самое, что и моя функция для получения расширенного разрешения, которая выглядит так:

    function getPermission(permRequired, callingFunction, urlAppend) {
        FB.ui({ method:
            "permissions.request",
            "perms": 'email,' + permRequired
        },
        function (response) {
            // DO THINGS NOW WE HAVE PERMISSION
        });
    };

Этот последний пример РАБОТАЕТ, но пример входа просто загружает всплывающее окно с сообщением «Извините, что-то пошло не так, повторите попытку позже».

Очевидно, что FB.init уже вызван, APP настроен правильно, APP_ID объявлен в FB.init и т. д., ясно, что все остальное работает.

Вход в FB с помощью кнопки входа в FB работает, но мне нужно, чтобы это работало через этот поток, чтобы работать «без трения» (т. Е. Я не могу нажать другую кнопку)


person Jamie Hartnoll    schedule 23.06.2012    source источник


Ответы (1)


Не используйте FB.ui с методом: «permissions.request» — просто используйте FB.login и установите параметр options с объемом (дополнительных) необходимых вам разрешений.

https://developers.facebook.com/docs/reference/javascript/FB.login/

person CBroe    schedule 24.06.2012