Я боролся с этим все утро.
На самом деле я пытаюсь заставить работать пользовательские действия 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 работает, но мне нужно, чтобы это работало через этот поток, чтобы работать «без трения» (т. Е. Я не могу нажать другую кнопку)