Titanium SDK 3.1.0 を使用していますが、iOS と Android の両方で Facebook にログインできません。両方で異なるエラー メッセージが表示されます。Android で、Titanium から Facebook モジュールを使用して Facebook にログインしようとすると、logcat で次のエラーが発生します。
E/FacebookModule(29188): (main) [114509,241940] LoginDialogListener onFacebookError: null
E/FacebookModule(29188): com.facebook.android.FacebookError
E/FacebookModule(29188): at com.facebook.android.Facebook.onSessionCallback(Facebook.java:433)
E/FacebookModule(29188): at com.facebook.android.Facebook.access$000(Facebook.java:97)
E/FacebookModule(29188): at com.facebook.android.Facebook$2.call(Facebook.java:379)
E/FacebookModule(29188): at com.facebook.Session$3$1.run(Session.java:1239)
E/FacebookModule(29188): at android.os.Handler.handleCallback(Handler.java:605)
E/FacebookModule(29188): at android.os.Handler.dispatchMessage(Handler.java:92)
E/FacebookModule(29188): at android.os.Looper.loop(Looper.java:137)
E/FacebookModule(29188): at android.app.ActivityThread.main(ActivityThread.java:4424)
E/FacebookModule(29188): at java.lang.reflect.Method.invokeNative(Native Method)
E/FacebookModule(29188): at java.lang.reflect.Method.invoke(Method.java:511)
E/FacebookModule(29188): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/FacebookModule(29188): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/FacebookModule(29188): at dalvik.system.NativeStart.main(Native Method)
E/FacebookModule(29188): (main) [7,241947] onAuthFail: null
これは、Facebookにログインするために使用しているコードです:
var fb = require('facebook');
fb.appid = FACEBOOK_APP_ID;
fb.permissions = ['publish_stream'];
fb.forceDialogAuth = true;
fb.addEventListener('login', function(e) {
if (e.success) {
socialFacebook.image = imagesPath + "kinedu_0000_btn_FB.png";
} else if (e.error) {
alert('Error: ' + e.error);
} else if (e.cancelled) {
alert("Canceled");
}
});
var socialFacebook = Ti.UI.createImageView({
image:imagesPath + "kinedu_0000_btn_FB.png",
left:"5%",
bottom:10,
right:Ti.Platform.displayCaps.platformWidth/2
});
function socialFacebookTouchStart()
{
var animateTouchStart = Ti.UI.createAnimation({
bottom:9, duration:200
});
socialFacebook.animate(animateTouchStart);
}
function socialFacebookTouchEnd()
{
var animateTouchEnd = Ti.UI.createAnimation({
bottom:10, duration:200
});
socialFacebook.animate(animateTouchEnd);
animateTouchEnd.addEventListener("complete", function(e){
if(fb.loggedIn)
{
//open facebook posting window
alert('logged in to facebook');
var openPostingOnFacebookMainView = Ti.UI.createAnimation({
opacity:1,
duration:250
});
var openPostingOnFacebookViewAnimation = Ti.UI.createAnimation({
opacity:1,
top:0,
duration:250
});
postingOnFacebookView.animate(openPostingOnFacebookViewAnimation);
openPostingOnFacebookViewAnimation.addEventListener("complete", function(e){
postingOnFacebookMainView.animate(openPostingOnFacebookMainView);
});
}
else
{
alert('not logged in')
fb.authorize();
}
});
}
socialFacebook.addEventListener("touchstart", socialFacebookTouchStart);
socialFacebook.addEventListener("touchend", socialFacebookTouchEnd);
ログインに成功すると、別のビューが表示されるはずです。しかし、Facebook への呼び出しは失敗し、そのエラー メッセージが表示されます。iOS では、iOS 6 の組み込み Facebook ログインを使用するためにモジュールが異なる方法で開始されることを除いて、コードはほとんど同じです。
var fb = require('facebook');
fb.appid = 548069311920318;
fb.permissions = ['read_stream'];
fb.forceDialogAuth = false;
しかし、これで、次のエラーが表示されます: ユーザーがログイン プロセスをキャンセルしました.. ビューをクリックしてログインするだけである場合、どうすればプロセスをキャンセルできますか? Facebook モジュールを使用するのはこれが初めてです。ドキュメントに示されている例に従っていますが、Android と iOS の両方でこれらのエラーが発生する理由がわかりません。あなたが提供できるどんな助けにも感謝します。