J'utilise la connexion Facebook sous Android.
Code:
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) this.findViewById(R.id.login_button);
loginButton.setReadPermissions("email", "public_profile");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
Log.println(Log.ASSERT, "FB", "inicio session ");
}
@Override
public void onCancel() {
Log.println(Log.ASSERT, "FB", "OP NO completada");
// App code
}
@Override
public void onError(FacebookException exception) {
Log.println(Log.ASSERT, "FB", " Errro de sesion ");
exception.printStackTrace();
// App code
}
});
mais en obtenant toujours l'erreur suivante:
SERVER_ERROR: [code] 1675030 [message]: erreur lors de l'exécution de la requête . [extra]: erreurs lors de l'exécution de l'opération "ProxyAuthAppLoginQuery": At Query.proxy_auth_app_login: Echec de la résolution du champ. W/System.err:
à com.facebook.login.LoginManager.onActivityResult (LoginManager.Java:190) W/System.err: à com.facebook.login.LoginManager $ 1.onActivityResult (LoginManager.Java:159) W/System.err: à com.facebook.internal.CallbackManagerImpl.onActivityResult (CallbackManagerImpl.Java:82) W/System.err: à com.procibernetica.moca.MainActivity.onActivityResult (MainActivity.Java:130) W/System.err: à Android.app.Activity.dispatchActivityResult (Activity.Java:5423) W/System.err: à Android.app.ActivityThread.deliverResults (ActivityThread.Java:3401) W/System.err: à Android.app.ActivityThread.handleSendResult (ActivityThread.Java:3448) W/System.err: à Android.app.ActivityThread.access $ 1300 (ActivityThread.Java:138) W/System.err: à Android.app.ActivityThread $ H.handleMessage (ActivityThread.Java:1284) W/System.err: à Android.os.Handler.dispatchMessage (Handler.Java:102) W/System.err:
sur Android.os.Looper.loop (Looper.Java:149) W/System.err: at Android.app.ActivityThread.main (ActivityThread.Java:5061) W/System.err: à Java.lang.reflect.Method.invokeNative (Méthode native ) W/System.err: à Java.lang.reflect.Method.invoke (Method.Java:515) W/System.err: at com.Android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.Java:787) W/System.err: à com.Android.internal.os.ZygoteInit.main (ZygoteInit.Java:603) W/System.err: à dalvik.system.NativeStart.main (méthode native)
J'ai ajouté les autorisations suivantes.
<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
@Danial answer correct, mais je veux ajouter quelque chose à cela. Ce type d'erreur ne survient que lorsque l'application est en cours de développement. Suivez ce lien _ et sélectionnez votre application. Ensuite, vous pouvez faire deux choses ici. À partir de l'onglet Roles, vous pouvez autoriser la connexion à vos amis uniquement. Vous pouvez également sélectionner App Review et créer votre app public
afin que tout le monde puisse se connecter.
La documentation sur facebook n'est pas correcte. Je devais ajouter les 3 autorisations par défaut pour que cela fonctionne.
loginButton.setReadPermissions("email", "public_profile", "user_friends");
Le problème était similaire car l'interface utilisateur de Firebase spécifiait le Android:value
. Voici comment je l'ai résolu:
<application
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme.Base">
<meta-data
Android:name="com.facebook.sdk.ApplicationId"
tools:replace="Android:value"
Android:value="@string/facebook_app_id" />
<acitivity
...
</activity>
...
Toutes les réponses ci-dessus ne m'ont pas aidé, qu'est-ce qui s'est passé lorsque vous avez utilisé cette commande
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
pour obtenir les hachages de clés que vous avez mis dans les configurations facebook.
il vous demandera un mot de passe; au début, je n'en ai pas défini. Le problème est donc survenu lorsque j'ai entré Android
comme mot de passe. ça a marché !
Mode développeur en direct Veuillez vérifier l’état du mode développeur. Ce doit être "Live" . Tout d'abord, vous devez ajouter l'URL de confidentialité pour votre propre projet facebook que vous souhaitez tester sur Facebook ou sur qh .... Ensuite, activez le mode développeur (Activer)
Outre les autres réponses, veuillez également vérifier que l'adresse de messagerie du compte utilisé pour vous connecter est vérifiée.
Cette erreur est également renvoyée, même lorsque votre application est publique ou que vous êtes répertorié en tant que testeur.
Vérifiez que votre
<meta-data Android:name="com.facebook.sdk.ApplicationId" Android:value="@string/facebook_app_id"/>
se résout en un identifiant d'application Facebook correct, en particulier si vous le spécifiez de manière dynamique à l'aide de la génération dégradée, plutôt que de le coder en dur dans strings.xml.
Dans mon cas, la clé de hachage générée était fausse car j'utilisais une mauvaise OpenSSL . J'utilisais openssl-0.9.8k_X64.Zip au lieu de openssl-0.9.8e_X64.Zip, ce qui m'a généré une mauvaise clé de hachage qui a causé ce problème J'espère que ça aide quelqu'un que j'ai perdu pendant 8 heures à essayer de comprendre cela.
Dans mon cas, le problème était mal généré avec le hachage qui doit être soumis sur la page de l'application Facebook. La solution trouvée dans cet article https://developers.facebook.com/docs/facebook-login/Android/advanced
Vérifier manuellement le hachage de la clé - Vous pouvez imprimer le hachage de la clé envoyé à Facebook et utiliser cette valeur dans App Dashboard. Apportez cette modification à onCreate () dans votre activité principale:
try
{
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto",
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) {
}
Ajouter une ressource de chaîne "facebook_application_id" dans votre strings.xml
remplacez APP_ID par votre identifiant d'application facebook
<string name="facebook_application_id" translatable="false">APP_ID</string>