インターネット接続が利用できない状態でユーザーが [Login with Facebook] ボタンをクリックするとどうなるかを確認するまで、すべてが正常に機能していました。
次のような乾杯のメッセージが表示されました。
ログインに失敗しました。このアプリのメーカーに連絡して、問題 #1118578 を Facebook に報告するよう依頼してください。
logcat には次のものがあります。
D/Facebook-authorize(2824): ログインがユーザーによってキャンセルされました。
このトーストを取り除き、メソッドに独自のエラー メッセージを表示しようとしましたが、onCancel()
そのトーストを無効にする方法が見つかりません。WiFi を再度有効にしたら、シングル サインオンが機能しなくなりました。
これの原因は何ですか?
private void fbLogin() {
facebook.authorize(this, new String[] { "email" }, new DialogListener() {
@Override
public void onComplete(Bundle values) {
app.save("fb_token", facebook.getAccessToken());
app.save("fb_expire", facebook.getAccessExpires());
mAsyncRunner.request("me", new meRequestListener());
}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
編集:
私自身の質問に答えるために、#1118578 の問題を解決しandroid:launchMode="singleInstance"
たマニフェストから削除します。<activity>
android:launchMode="singleInstance"
ただし、ブラウザは新しいインテントを介してデータをアクティビティに戻すため、Twitter OAuth ログインには が必要です。マニフェストで提供android:launchMode="singleInstance"
しないと、新しいアクティビティが開始され、OAuth ベリファイアを受け取りません。
同じアクティビティで Facebook と Twitter のログインを使用する方法はありますか?
私が考える唯一の解決策は、 で Twitter4j のダミーアクティビティを使用することsingleInstance
です。