私のアプリで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のとログイン用のブラウザを開きます。これは非常に厄介です。
Facebookの立場からその貢献度以降に変更されたようですけれども、私は、実際にモジュールのsetLoginBehavior
機能の本来の貢献だ「私たちは、いつもあなたがブラウザを使用したいです。」 "私たちはいつもあなたにネイティブを使うことを願っています"。誰かがある程度の洞察力を持っている場合に備えて、私はこの質問をここに掲載しています。答えを待つ間、私はそのモジュールのソースに戻ります。
私が想像できる唯一の要因は、ほとんどのアプリケーションとは異なる場合があります。これは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