При попытке войти в facebook в моем приложении, я испытываю несколько странных поведений.iOS Appcelerator Facebook Войти - Вход в систему Событие не срабатывает на устройстве
Текущая информация стек:
- Appcelerator 6.0.1.GA
- Appcelerator CLI 6.1.0
- IOS 10,1
- Xcode 8.2.1
Странные Поведения:
login
Событие никогда не срабатывает при возврате с Facebook на устройстве.login
Событие иногда не срабатывает при возврате из входа в Facebook на симуляторе.- Настройка facebook.LOGIN_BEHAVIOR_NATIVE по-прежнему пытается использовать вход в браузер на устройстве, иногда.
- Иногда на устройстве приложение-коммутатор открывает приложение Facebook и браузер для входа. Это довольно досадно.
Я на самом деле оригинальный вклад в setLoginBehavior
функциональности модуля, хотя позиция Facebook, кажется, изменилось с того вклада «Мы всегда хотим, чтобы использовать браузер.» «Мы всегда хотим, чтобы вы использовали Native». Я размещаю этот вопрос здесь, если у кого-то есть понимание - пока я жду ответа, я вернусь к источнику для этого модуля.
Единственный фактор, который я могу себе представить, может отличаться от большинства приложений, так это то, что я использую Kris Kowals Q. Здесь следует код, почти дословно из моего приложения.
Реальная функция, которая делает вход:
// linkingmodule.js
exports.linkFacebook = function() {
var Q = require('vendor/q'),
response = Q.defer(),
facebook = require('facebook'),
permissions = ['public_profile', 'user_friends', 'user_likes'];
facebook.initialize();
facebook.setLoginBehavior(facebook.LOGIN_BEHAVIOR_NATIVE);
facebook.permissions = permissions;
facebook.addEventListener('login', function fireLogin(e) {
if(!e.success || !facebook.loggedIn) {
return response.reject({
status: e.code,
error: e.error
});
}
response.resolve({
uid: e.uid,
data: e.data,
token: facebook.getAccessToken()
});
});
facebook.authorize();
return response.promise;
};
Сплав функция управления, которая вызывает функцию входа:
// login.js
function facebookLogin() {
var remote = require('linkingmodule');
remote.linkFacebook().
then(function(r) {
// do some things
}).
fail(function(e) {
console.error(e);
throw 'Unable to login with Facebook.';
});
}).
fail(function(e) {
console.error('Facebook login failed');
console.error(e);
});
}
Дополнительная информация: В симуляторе, похоже, работает только вход в систему после очистки содержимого и настроек, а затем для восстановления приложения. Впоследствии восстановление приложения приведет к тому, что логин не загорится. – threeve