Ich erhalte diesen Fehler. Wenn ich versuche, mich mit Facebook bei meiner App anzumelden. Wenn ich das erste Mal authentifiziere, wird es korrekt funktionieren. Nachdem ich meine Bewerbung deinstalliert habe und mich nun bei Facebook anmelden möchte, wird dieser Fehler angezeigt.
Ein weiteres Problem : Nach der Authentifizierung in Gerät1 und dem Versuch, sich mit Facebook auf Gerät2 anzumelden, wird ebenfalls der gleiche Fehler angezeigt.
Lösung, die ich gefunden habe: Wenn ich die App-Authentifizierung aus den Facebook-App-Einstellungen entferne, funktioniert sie in den obigen Szenarien, aber dies ist keine gute Lösung, wie wir den Benutzern mitteilen können diese Aktion zu tun?
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();
}
}
}
}
});
In Facebook Beispiel auch ein Problem: GitHub Link von Facebook Beispiel
Schritte zum Reproduzieren:
App starten Mit Facebook anmelden FB-Profil authentifizieren.
Deinstallieren Sie die App und installieren Sie sie erneut.
Versuchen Sie nun, sich mit Facebook anzumelden.
Ich stelle auch dieses Problem gegenüber. Aktualisieren Sie Ihren Schlüsselhash auf Facebook
Der Fehler tritt aufgrund eines ungültigen Hashschlüssels auf.
Wir können den Hash-Schlüssel mit dem folgenden Befehl erstellen und aktualisieren hier unter Einstellungen-> Grundlegend -> Android HashKeys
keytool -exportcert -alias ADD_RELEASE_KEY_ALIASE_HERE -keystore ADD_UR_KEYSTORE_PATH_HERE | openssl sha1 -binary | openssl base64
Sie können den Relase Key Alias Ihres Keystores bei Bedarf mit dem folgenden Befehl ermitteln:
keytool -list -keystore ADD_UR_KEYSTORE_PATH_HERE
Ich habe auch ein Problem mit dem obigen HashKey. Die Anmeldung funktioniert einwandfrei, wenn ich das Release-APK direkt auf dem Gerät installiere. Wenn ich das APK jedoch in den Play Store hochlade und die App aus dem Store installiere, wird derselbe Fehler angezeigt, dass die Anmeldung fehlgeschlagen ist. Das Update dafür lautet wie folgt:
Dieses Problem tritt auf, weil Sie die App bereits über Facebook authentifiziert haben und Ihr Code möglicherweise bei jeder Facebook-Authentifizierung (Suchen und Entfernen) enthält.
Folge diesen Schritten:
Gehen Sie zu den Facebook-Einstellungen.
Entfernen Sie Ihre App.
Stellen Sie sicher, dass Sie die Facebook-Anmeldung auf der Facebook-Entwicklerseite hinzugefügt und die Client OAuth Anmeldung aktiviert haben.
Wechseln Sie zu Ihrem Code und überschreiben Sie die Rückrufmethode:
@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);
}
}
Rufen Sie in der Oncreate-Methode das AccessToken auf:
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();
}
Für mich lag dieser genaue Fehler an ungültigen Berechtigungszeichenfolgen. Passiert auf iOS und Android.
Das Problem für mich ist wirklich mit dem Hash-Schlüssel, es ist nicht gültig.
Ich hatte genau das gleiche Problem und es war sehr schwer zu diagnostizieren. Der Grund ist, dass Facebook den Hash-Schlüssel bei der ersten Anmeldung nicht überprüft und es scheint, dass der Schlüssel korrekt ist, aber in der Tat ist es nicht. Zweitens ist die Fehlermeldung einfach eine Idiokratie. Drittens ist die Lösung: versuchen Sie den folgenden Link, es hat mir geholfen.
Bessere Anweisungen zum Generieren eines gültigen Hash-Schlüssels
App aus den Benutzereinstellungen in Facebook (Account) entfernen.
Deinstalliere die App.
Holen Sie sich den neuen Hash mit dem Release oder dem neuen Debug-Keystore. Verwenden Sie diesen Befehl:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Fügen Sie den neuen Hash auf dem Facebook-Dashboard hinzu.
Ich hatte das gleiche Problem.
Es war ein Fehler auf meiner Seite.
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Bei der Eingabe dieses Befehls wurde Enter keystore password:
. Ich habe stattdessen die keyPassword
storePassword
angegeben und es wurde keine Fehlermeldung ausgegeben, stattdessen wurde ein anderer Hash generiert!
Ich beziehe mich darauf,
https://developers.facebook.com/docs/Android/getting-started
oder fügen Sie einfach den folgenden Code in die Methode onCreate () ein, die den Schlüssel-Hash zurückgibt.
// 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) {
}
Fügen Sie den obigen Code hinzu, um den Schlüssel abzurufen, den Sie speichern können
https://developers.facebook.com/docs/facebook-login/Android
hier. Jetzt wird es funktionieren.
Es hat bei mir funktioniert, die Hoffnung wird auch bei Ihnen funktionieren.
Ich hatte das gleiche Problem. Ich hatte meine Keyhashes perfekt definiert und stand immer noch vor dem gleichen Problem. Ich konnte mich nicht einmal zum ersten Mal einloggen.
Lösung für mein Problem war:
Gehen Sie zum Dashboard Ihrer App hier
Stellen Sie im linken Bereich unter der Registerkarte Produkte sicher, dass Sie eine Facebook-Anmeldung hinzugefügt haben. Wenn nicht, fügen Sie es dort hinzu.
Wenn alle Ihre anderen Konfigurationen vorhanden sind. Danach funktioniert es perfekt.
Ich hatte das gleiche Problem mit meinem Redmi Note 3. Getestet auf Samsung. Keine Probleme. Ich frage mich, ob es Redmi-spezifisch ist.
Ich hatte das gleiche Problem und stellte fest, dass der von mir generierte Hash-Schlüssel zum Einfügen in die Facebook-Entwicklerkonsole nicht korrekt ist. Ich habe versucht, einen Hash-Schlüssel von einem anderen PC zu generieren, und wurde aufgefordert, ein Kennwort für diesen bestimmten Keystore einzugeben, was auf meinem PC nicht der Fall war. Stellen Sie also sicher, dass Sie beim Erstellen des Hash-Schlüssels zur Eingabe von Passwort für den Schlüsselspeicher aufgefordert werden, und fügen Sie diesen Hash-Schlüssel in die Facebook-Entwicklerkonsole ein.
Befehl zum Generieren des Hash-Schlüssels:
keytool -exportcert -alias TYPE ALIAS HERE -keystore KEY_STORE_FILE_PATH_HERE | openssl sha1 -binary | openssl base64
Ich hatte heute das gleiche Problem auf meinen Sites und stellte dann fest, dass ich die alte default_graph_version = v3.2 verwendete. Ich habe es auf den neuesten Stand gebracht:
default_graph_version = v4.0
Jetzt funktioniert alles wieder. Versuche es.