常にセッション状態:CLOSED_LOGIN_FAILED、トークン:{AccessTokenトークン:ACCESS_TOKEN_REMOVED in facebook Android sdk3.0。 .itは前のページ自体を表示します。
何らかの理由で、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ネイティブアプリ自体に誤った認証情報を入力しました。
Android developers.facebook.comのアプリ設定で入力されたキーハッシュがAPKのキーハッシュと一致しません。
トラブルシューティング#1 Facebookネイティブアプリを開き、適切にログインしてコンテンツにアクセスできることを確認します。 Facebookネイティブアプリに誤った認証情報を入力した場合(おそらく最近パスワードを変更した可能性があります)、Facebook SDKはネイティブアプリを使用してSSOを繰り返し実行し、CLOSED_LOGIN_FAILEDを報告します。
トラブルシューティング#2このページの「Facebookアプリの作成」の指示に従ってください https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android/3.0/ 。
サンプルアプリのアプリ構成にはデバッグキーハッシュが登録されていないため、Facebook SDKで提供される例は失敗します。同じリンクの「サンプルの実行」の下にこれを修正する方法の説明があります。ここに引用があります:
簡単に言うと、作成するすべてのAndroidアプリは署名されます。また、後で確認するように、信頼性のセキュリティチェックとしてFacebookに各アプリのキーハッシュを登録する必要があります。しかし、 SDKサンプルのこのチェックをバイパスして迅速に稼働させるには、グローバルFacebook開発者プロファイルにキーハッシュを追加します。
同様の問題が発生しました-CLOSED_LOGIN_FAILED
とcom.facebook.FacebookOperationCanceledException: User canceled operation
そして私は間違いなく操作をキャンセルしていませんでした。
アプリケーションコードのすべての行を7〜8時間使って楽しんだ後、これがマニフェストの私のアクティビティに設定されていることに気付きました。それを取り除くことで解決しました。
Android:launchMode="singleInstance"
同じエラーが発生し、スターターアクティビティのonActivityResultで次の行を忘れていました。
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
ここにメソッド全体があります:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case RESULT_CODE_IMPORT_FACEBOOK:
//do stuff
break;
default:
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
break;
}
}
サンドボックスモードでFacebookアプリケーションを使用している場合は、使用しているアカウントが承認された管理者または開発者のリストに含まれていることを確認してください。
デバイスからFacebookアプリをアンインストールしてから、再インストールしてみてください。
別の回避策は、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と一致しません」を提供します "
特定のキーストアでアプリに明示的に署名しない場合、IDEはデフォルトのキーストアで署名します。特定のキーストアでプロジェクトに署名する必要があります。キーを抽出します-ハッシュしてFacebookアカウントに追加します。
私たちは同じ問題に直面し、かなり長い間探し回っていました。この問題を修正するために、ハッシュキー、マニフェストファイル、その他多くのことを確認しました。私たちは古い3.23.1バージョンのFacebook SDKを使用しており、特定の電話でのみ、アプリがFacebookに接続できませんでした。 「CLOSED_LOGIN_FAILED」状態を返し、logcatを介して「null呼び出しパッケージでLoginActivityを呼び出せません。これは、呼び出し元のlaunchModeがsingleInstanceの場合に発生する可能性があります」と報告しました。
Fairphoneのような一部の電話では、新機能が追加されています。 https://fairphone.zendesk.com/hc/en-us/articles/207164396-What-is-the-Privacy-Impact -機能-
この機能は、特定の状況でFacebookへの信頼できる通信を回避します。選択を解除してアプリを再起動し、権限を受け入れるとすぐに、アプリは期待どおりに動作していました。
これが修正中に得た白髪を避けるのに役立つことを願っています。
私の場合、FacebookアプリケーションIDが間違っていて、キーハッシュがFacebookのアプリケーションに追加されていませんでした
奇妙なことに、デバッグ可能な非署名バージョンで正常に機能していました!!