J'ai implémenté le login Facebook et cela fonctionne bien sur certains appareils / AVD. Mon appareil de développement est un téléphone de pain d'épice, mais le teste avec un périphérique 4.1.1, il ne se connecte tout simplement pas. Après avoir appuyé sur le bouton Facebook, il affiche un écran vide (essayant de connecter Facebook) et après 1-2 secondes revient à l'écran d'accueil. En outre, aucune erreur n'est grillée ni affichée dans le logcat. Oh, et l'application Facebook est installée dans l'appareil ... Toutes idées?
Mise à jour: strong> p> J'ai activé l'enregistrement comme suggéré par Mark Venzke et en utilisant THIS procédure, et j'ai reçu cet avertissement (deux fois) sur chaque tentative de connexion (Remarque: Test avec un téléphone HTC One S): P > 07-15 10:55:51.718: E/chromium(30475): external/chromium/net/disk_cache/stat_hub.cc:216: [0715/105551:ERROR:stat_hub.cc(216)] StatHub::Init - App com.facebook.katana isn't supported.
10 Réponses :
Shirley Facebook Login n'est pas brisé sur tous les appareils 4.1.1. C'est donc quelque chose avec votre implémentation. P>
Êtes-vous sûr que la clé HASH est la même sur ce périphérique comme ce que vous avez configuré sur développeur.facebook.com? Si vous avez utilisé une clé de développement différente ou si elle a été installée par un magasin tiers, il est possible que les hauts clés ne correspondent pas. P>
Activez le débogage de la journalisation dans le code source SDK Facebook et de la reconstruire. Il est généralement désactivé par défaut pour des raisons de sécurité. Selon votre version du SDK, il peut être util.java ou un autre emplacement, et peut être une variable appelée "Activer_Log". P>
Il n'y a pas assez d'informations dans votre question. Donc, je fais quelques suppositions ici.
1) Regardez d'abord dans la réponse de Mike Venzke. P>
2) Si cela ne fonctionne pas, essayez ceci: Vous devez vous connecter sur votre appareil à l'aide de SSO (signe unique sur). Voici donc les étapes que vous pouvez prendre. P>
Supprimer la construction. Réinstallez-le. et lorsqu'on lui a demandé des autorisations de votre appareil, laissez-les leur permettre. p>
Si vous n'êtes pas revenu à votre application, vous devez les ajouter à votre fichier manifeste: p> Où app_name et app_id sont votre identifiant d'application et votre nom d'application respectif sur votre page d'application Facebook. P> Avez-vous ajouté ces BTW? P> Vous avez besoin de ces autorisations < / p> Si vous postez une autre information, je pourrais deviner le problème. p> p>
J'ai déjà eu tout ce qui est configuré dans le manifeste (à l'exception des 2 premières autorisations, bien que je les ai ajoutés et obtenu le même comportement). Notez également que cela fonctionne réellement dans mon appareil habituel (skate ZTE, pain d'épice). J'ai mis à jour le poste, j'obtiens ce qu'il semble une erreur spécifique HTC (ne fonctionne pas sur HTC One S).
Je pense que l'erreur de connexion Facebook se produit principalement pour résoudre ce problème, vous suivez le tutoriel étape par étape avec la patience. P>
Autres sages, il est très difficile de résoudre votre problème ici. Donc, vous pouvez faire référence à ce lien. P>
http://developers.facebook.com/andrroid/ p>
J'espère que vous réussirez. P>
Je pense que le problème avec votre application Facebook Android dans le périphérique. Donc, d'abord désinstaller l'application Facebook Android de l'appareil et vérifiez que la connexion Facebook fonctionne correctement ou non. p>
Nan. Testé sur 2 périphériques HTC One S et donner le même résultat
Depuis la nid d'abeille, vous n'êtes pas en mesure de faire des appels Internet sur le thread principal, essayez d'utiliser un fond d'asyncque android ou de créer vous-même un nouveau fil. P>
http://developer.android.com/reference/andrroid/os/ Asyncktask.html p>
DemandaSynccTask (regarder le code) est une classe Facebook qui fonctionne théoriquement sur un système d'asyncaptage. L'appel réseau ne doit donc pas être effectué dans le fil de l'interface utilisateur.
Eh bien, peut-être que cela aidera, mais de toute façon, constaté que com.htc.socialnetwork.facebook est le stock Facebook pour certains périphériques HTC et le supprimer et l'installation à partir du magasin de lecture peut-être vous aidera ...
Que voulez-vous dire avec "com.htc.socialnetwork.facebook est le stock Facebook pour certains périphériques HTC"? Donc, désinstaller et réinstaller Facebook de Google Play devrait-il résoudre ce problème?
Désolé, je ne suis plus sûr, mais le problème est probablement avec votre Facebook pour HTC Service, essayez d'effacer les données ou de la suppression de votre compte de synchronisation, il supprimera probablement vos photos d'amis de vos contacts mais peut aider.
J'ai cette erreur lors de l'utilisation d'un périphérique avec une ancienne version de Facebook. Supprimer complètement Facebook ou mettre à jour l'application Facebook corrigée. P>
Je suis sûr que cela se produit parce que Facebook pour Android était juste un webview webview du site mobile. P>
Notez également que certains périphériques (mon incroyable 4G LTE) réinstalleront la version ancienne (webview) de Facebook si vous essayez de le supprimer. p>
Il existe certainement un conflit entre votre application Stock et le SDK. Donc, si vous ne voulez pas désinterposer l'application Stock HTC et utilisez toujours le SDK 3.0, je pense que votre meilleur pari sans modérer le code source du SDK serait de désactiver SSO et de vous connecter uniquement via webview.
Ceci peut facilement être Fait en ajoutant la sessionLoginbehavior.suppress_sso à chaque fois que vous essayez d'ouvrir une nouvelle session. Voici un échantillon que j'ai changé de la sessionLoginsample (loginabilizactivité) à partir du SDK Facebook pour vous montrer quoi faire: P>
@Override public void onCreate(Bundle savedInstanceState) { ... Session session = Session.getActiveSession(); if (session == null) { if (savedInstanceState != null) { session = Session.restoreSession(this, null, statusCallback, savedInstanceState); } if (session == null) { session = new Session(this); } Session.setActiveSession(session); //add the check, for if session is opened if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED) || !session.getState().isOpened()) { //Add the suppress SSO behavior to force webview auth dialog to popup session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO)); } } ... } //then put your code in the statusCallback method or keep it in the session state change listener
+1 eu le même problème. Merci d'avoir souligné le conflit avec HTC Stock App. Je l'ai eu en train de travailler en définissant un comportement sur l'instance Loginbutton de Facebook: authbutton.setloginbehavior (sessionLoginbehavior.suppress_ss o) code>
Connectez le périphérique à Eclipse pour voir LOGCAT. Si Journal Cat n'exécute pas l'invite CMD ouverte sous Windows et exécutez ADB Redémarrer, (Définissez d'abord le chemin ADB). Ensuite, vous pouvez voir logcat en cours d'exécution. Ouvrez maintenant votre application et cliquez sur le bouton de connexion Facebook. Vous pouvez obtenir la bonne clé de hachage en couleur jaune dans le chat de log. Mettez cette clé sur Facebook et maintenant Facebook Login fonctionnera sur chaque appareil. merci. p>
List<String> permissions = new ArrayList<String>(); permissions.add("email"); //start Facebook session openActiveSession(this, true, new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { if (session.isOpened()) { //make request to the /me API Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { String firstName = user.getFirstName(); String lastName = user.getLastName(); String id = user.getId(); String email=null; try { email = user.getProperty("email").toString(); } catch (Exception e) { // TODO: handle exception } String gender = (String) user.getProperty("gender"); String birthday = user.getBirthday(); //welcome.setText("Hello \n" + firstName+"\n"+lastName+"\n"+email+"\n"+gender+"\n"+birthday+"!"); if(firstName!=null) { SharedPreferences.Editor editor = settings.edit(); editor.putString("fligin", "1"); editor.putString("firstName", firstName); editor.putString("lastName", lastName); editor.putString("email", email); editor.putString("gender", gender); editor.putString("birthday", birthday); editor.commit(); Intent intent=new Intent(getApplicationContext(), RegistrationOneActivity.class); startActivity(intent); //overridePendingTransition( R.anim.slide_in_up, R.anim.slide_out_up ); finish(); } else { Toast.makeText(getApplicationContext(),"Person information is null", Toast.LENGTH_SHORT).show(); finish(); } } } }); } } }, permissions);
Essayez d'insérer cette ligne dans laquelle vous définissez votre bouton de connexion dans le code source Java
Essayez d'insérer 4 espaces devant les deux lignes pour formater le code.
[Mode stressé sur] Parfois, vous devez simplement supposer que Facebook SDK (au moins le dernier) est vraiment damné de buggy et va tomber beaucoup. Quel SDK utilisez-vous?
Oui! Je vois que Facebook n'est pas vraiment bon sur mobile, de manière générale (leurs propres applications sucer aussi beaucoup) ... J'utilise le dernier SDK, qui semble être v3.0.1. S'il s'agit d'un bug du SDK, il y a été là depuis 3 mois!
Le SDK fonctionne différemment lorsque FB Native App est installé sur le téléphone ou non .. Considérez-vous ce scénario?
En fait, je pensais que cela ne fonctionnerait pas sans l'application Native FB. Mais de toute façon, j'ai testé l'avoir installé
Pouvez-vous poster du code s'il vous plaît?
Vous devez poster un code postal pour que les gens postent des réponses pertinentes.
Oups, j'ai oublié de l'annoncer ici, j'ai mis à jour la question :)
Pouvez-vous fournir le reste de la sortie du journal SDK Facebook (supprimer des données personnelles)? Il est possible que la ligne FacebookSynCService n'est pas liée, ou du moins que le reste de l'information aiderait à fournir un contexte.
Ok, je le ferai, mais demain (je n'ai pas ce téléphone en ce moment). Quoi qu'il en soit, une autre ligne intéressante du logcat, j'ai remarqué aujourd'hui: E / chrome (30475): externe / chrome / net / disk_cache / stat_hub.cc: 216: [0715/105551: ERREUR: STAT_HUB.CC (216)] STATACH: : Init - app com.facebook.katana n'est pas pris en charge.