facebook android sdk3.0 で常にセッション状態:CLOSED_LOGIN_FAILED, token:{AccessToken token:ACCESS_TOKEN_REMOVED を取得しています。Facebook SDK で指定された例を実行しても、認証され、次のフローにリダイレクトされません。前のページ自体が表示されます。
12 に答える
なんらかの理由で、keytool が生成するハッシュがアプリと同じではありません。これが私のために働いたものです。facebook が提供する標準コードを使用してハッシュを生成します。
PackageInfo info = getPackageManager().getPackageInfo("<your_package_name>", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
「your_package_name>」を対応するパッケージ名に置き換えてください。logcat を見てキーハッシュを取得し、Facebook アプリの設定に入力します。
ACCESS_TOKEN_REMOVED は問題とは関係ありません。これは単に、Facebook SDK がアクセス トークンをログに記録していないためです。そのため、エラーのその部分を安全に無視できます。
CLOSED_LOGIN_FAILED の考えられる原因は 2 つあります。
Facebook ネイティブ アプリ自体に間違った資格情報を入力しました。
developers.facebook.com のアプリ設定に入力された Android キー ハッシュが、APK のキー ハッシュと一致しません。
#1 トラブルシューティングするには、Facebook のネイティブ アプリを開き、適切にログインしていて、コンテンツにアクセスできることを確認します。Facebook ネイティブ アプリに誤った資格情報を入力した場合 (最近パスワードを変更した可能性があります)、Facebook SDK はネイティブ アプリを使用して SSO を繰り返し試行し、CLOSED_LOGIN_FAILED を報告します。
#2 をトラブルシューティングするには、このページhttps://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/の「Facebook アプリを作成する」の指示に従ってください。
サンプル アプリのアプリ構成にはデバッグ キー ハッシュが登録されていないため、Facebook SDK で提供される例は失敗します。同じリンクの「サンプルの実行」の下に、これを修正する方法の説明があります。ここに引用があります:
簡単に言うと、作成するすべての Android アプリは署名され、信頼性のセキュリティ チェックとして各アプリのキー ハッシュを Facebook に登録する必要があります (後で説明します)。ただし、SDK サンプルのこのチェックをバイパスし、それらをすばやく起動して実行するには、グローバル Facebook 開発者プロファイルにキー ハッシュを追加できます。
私は同様の問題を抱えていました-私はうまくやっていて、操作をキャンセルCLOSED_LOGIN_FAILED
しcom.facebook.FacebookOperationCanceledException: User canceled operation
ていませんでした。
アプリケーション コードのすべての行を 7 ~ 8 時間いじった後、これがマニフェストのアクティビティに設定されていることに気付きました。それを削除すると解決しました。
android:launchMode="singleInstance"
デバイスから Facebook アプリをアンインストールしてから、再インストールしてみてください。
もう 1 つの回避策は、sso ログイン メソッドを抑制することです。これは次のように行うことができます。
LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
私は同じ問題に直面しましたが、解決策は、facebook (developper.facebook) に入力し、アプリの設定に入力して、使用する場合はパッケージ名を追加するキーを追加する必要があったことでした。他の解決策: " Android Facebook SDK 3.0 は、ログイン中に "remote_app_id が保存された ID と一致しません"
私の場合、Facebook アプリケーション ID が間違っていました。また、キー ハッシュが Facebook のアプリケーションに追加されませんでした。
デバッグ可能な非署名バージョンで正常に動作していたのは非常に奇妙です!!
特定のキー ストアを使用して APP に明示的に署名しない場合、IDE はデフォルトのキー ストアで署名します。特定のキー ストアでプロジェクトに署名し、キー ハッシュを抽出して Facebook アカウントに追加する必要があります。
私たちは同じ問題に直面し、かなり長い間探し回っていました。この問題を修正するために、ハッシュ キー、マニフェスト ファイル、その他多くのことを確認しました。Facebook SDK の古いバージョン 3.23.1 を使用しており、特定の電話でのみアプリが Facebook に接続できませんでした。「CLOSED_LOGIN_FAILED」状態を返し、logcat を介して「null 呼び出しパッケージで LoginActivity を呼び出すことはできません。これは、呼び出し元の launchMode が singleInstance である場合に発生する可能性があります」と報告しました。
Fairphone のような一部の電話では、新しい機能が追加されています: https://fairphone.zendesk.com/hc/en-us/articles/207164396-What-is-the-Privacy-Impact-feature-
この機能は、特定の状況で facebook への信頼できる通信を回避します。チェックを外してアプリを再起動し、許可を受け入れるとすぐに、アプリは期待どおりに動作しました。
これが、修正中に得た白髪を避けるのに役立つことを願っています.
SessionLoginSample から何時間もこのエラーが発生しました。developer.facebook.com で明示的なアプリ SessionLoginSample を作成した後、それは機能しました。アプリIDをAndroidマニフェストなどにコピーしたところ、うまくいきました。つまり、Facebook の Getting Started ガイドに記載されているサンプル アプリの構成が失敗しました。