このエラーが発生しています。 Facebookでアプリにサインインしようとすると。初めて認証するとき、正しく機能します。アプリケーションをインストールし、Facebookでサインインしようとすると、このエラーが発生します。
別の問題:device1で認証し、device2でfacebookでログインしようとすると、同じエラーが発生します。
私が見つけた解決策:Facebookアプリ設定からアプリ認証を削除すると、上記のシナリオで動作していますが、これはユーザーに伝える方法としては良い解決策ではありませんこのアクションを行うには?
btnFbLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(accessToken != null) {
boolean expires = accessToken.isExpired();
if(!expires) {
performFbLoginOrSignUp(accessToken);
}
} else {
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
callbackManager = CallbackManager.Factory.create();
if (loginButton != null) {
loginButton.setReadPermissions("public_profile", "email", "user_friends");
if (CommonUtil.isConnectingToInternet(LoginActivity.this)) {
loginButton.performClick();
loginButton.setPressed(true);
loginButton.invalidate();
loginButton.registerCallback(callbackManager, mCallBack);
loginButton.setPressed(false);
loginButton.invalidate();
}
}
}
}
});
Facebookの例でも問題がある: Facebookの例のGitHubリンク
再現手順:
Facebook Authenticate FBプロファイルでアプリログインを起動します。
アプリをアンインストールして、再度インストールします。
次に、Facebookでログインしてみてください。
私もこの問題に直面しています。Facebookでキーハッシュを更新してください
このエラーは、無効なハッシュキーが原因で発生します。
以下のコマンドを使用してハッシュキーを作成し、同じ here を[設定]-> [基本]-> Android HashKeys
keytool -exportcert -alias ADD_RELEASE_KEY_ALIASE_HERE -keystore ADD_UR_KEYSTORE_PATH_HERE | openssl sha1 -binary | openssl base64
必要に応じて以下のコマンドを使用して、キーストアのリリースキーエイリアスを見つけることができます。
keytool -list -keystore ADD_UR_KEYSTORE_PATH_HERE
上記のHashKeyを使用することで、リリースAPKをデバイスに直接インストールするとログインが正常に機能するなどの問題も発生しますが、APKをPlayストアにアップロードしてストアからアプリをインストールすると、同じログイン失敗エラーが表示されます。この修正は次のとおりです。
この問題は、Facebookを介してアプリを既に認証しており、コードにFacebookのたびにAuthenticateが含まれている可能性があるために発生します(それを検索して削除します)。
次の手順を実行します:
Facebookの設定に移動します。
アプリを削除します。
Facebook開発者ページにFacebookログインを追加し、クライアントOAuth=ログインを有効にしていることを確認してください。
コードに移動して、コールバックメソッドをオーバーライドします。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Intent secondActivityIntent = new Intent(this, RedirectActivity.class);
startActivity(secondActivityIntent);
}
}
Oncreateメソッドで、AccessTokenを呼び出します。
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
// Set the access token using
// currentAccessToken when it's loaded or set.
}
};
// If the access token is available already assign it.
accessToken = AccessToken.getCurrentAccessToken();
if (accessToken != null && !accessToken.isExpired())
{
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
if(null != object) {
try
{
Intent i = new Intent(MainActivity.this, Feedback.class);
startActivity(i);
String email = object.getString("email");
String birthday = object.getString("birthday");
}
catch (Exception ex)
{
Toast.makeText(MainActivity.this, ex.toString(), Toast.LENGTH_SHORT).show();
}
} else {
// call your authentication process
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,birthday,link");
request.setParameters(parameters);
request.executeAsync();
}
私にとって、この正確なエラーは無効な許可文字列が原因でした。 iOSおよびAndroidで発生しました。
私にとっての問題は本当にハッシュキーにあります、それは有効ではありません。
私はまったく同じ問題を抱えていて、診断するのが非常に困難でした。その理由は、Facebookは最初のログイン時にハッシュキーをチェックせず、キーが正しいようですが、実際にはそうではないからです。第二に、エラーメッセージは単なるイディオクラシーです。 3番目は解決策です。次のリンクを試してください。
Facebook(アカウント)のユーザー設定からアプリを削除します。
アプリをアンインストールします。
リリースまたは新しいデバッグキーストアを使用して新しいハッシュを取得します。次のコマンドを使用します。
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Facebookダッシュボードに新しいハッシュを追加します。
私は同じ問題に直面しました。
それは私の側の間違いでした。
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
このコマンドを入力すると、Enter keystore password:
。 keyPassword
の代わりにstorePassword
を指定していましたが、エラーメッセージは表示されず、代わりに別のハッシュが生成されました。
私はこれを参照します
https://developers.facebook.com/docs/Android/getting-started
または、キーハッシュを返すonCreate()メソッドに以下のコードを追加します。
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
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));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
キーを保存するために上記のコードを追加します
https://developers.facebook.com/docs/facebook-login/Android
ここに。今では動作します。
それは私のために働いた、あなたにとっても希望が働くだろう。
私は同じ問題に直面していました。キーハッシュを完全に定義しましたが、まだ同じ問題に直面していました。初めてでもログインできませんでした。
私の問題の解決策は:
アプリのダッシュボードに移動します こちら
左ペインの[製品]タブで、Facebookログインが追加されていることを確認します。そうでない場合は、そこに追加します。
他のすべての構成が整っている場合。それはその後完璧に動作します。
Redmi Note 3でも同じ問題が発生しました。Samsungでテストしました。問題はありません。 Redmi固有のものかどうか。
私は同じ問題に直面し、Facebook開発者コンソールに配置するために生成したハッシュキーが適切でないことがわかりました。別のPCからハッシュキーを生成しようとしましたが、PCにはない特定のキーストアのパスワードを入力するように求められました。そのため、ハッシュキーの作成中にキーストアパスワードの入力を求められたことを確認してから、そのハッシュキーをFacebook開発者コンソールに挿入します。
ハッシュキーを生成するコマンド:
keytool -exportcert -alias TYPE ALIAS HERE -keystore KEY_STORE_FILE_PATH_HERE | openssl sha1 -binary | openssl base64
今日、私のサイトで同じ問題が発生し、古いdefault_graph_version = v3.2を使用していることに気付きました。私はそれを最新のものに変更しました:
default_graph_version = v4.0
今、すべてが再び機能します。試してみる。