Autorisation Android Facebook – ne peut pas vous connecter lorsque l'application Facebook officielle est installée

J'ai besoin de me connecter à Facebook et d'avoir les mêmes champs, comme le courrier électronique, etc. J'utilise le SDK de Facebook, et j'ai configuré ma clé Android Hash dans developers.facebook et configuré "Configuré pour Android SSO". Dans le simulateur et certains périphériques, l'application fonctionne bien.

Mais si l'application Facebook officielle est installée sur l'appareil, ma application ne fonctionne pas: je pousse le bouton de connexion, mais je ne vois pas une boîte de dialogue avec une vue web si mon mot de passe et la connexion étaient demandés. Il ressemble au problème lors de la question de débordement de Stack. L' utilisation de Facebook.authorize avec le SDK d'Android n'appelle pas la question de l'activitéResult ou Stack Overflow . , Mais je ne comprends pas comment le résoudre.

  • Correction de vue Android
  • Android: liste des certificats racine approuvés disponibles
  • Authentifiez l'utilisateur connecté avec FB sur mon serveur en utilisant le Gestionnaire de compte Android
  • Comment créer une boîte de dialogue personnalisée dans Android?
  • Comment ouvrir un PDF via Intent from SD card
  • Récupérer une image de profil à l'aide de Facebook SDK 3.0 pour Android
  • Mon code

    @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data); } public void getAccessToken() { SessionEvents.AuthListener listener = new SessionEvents.AuthListener() { @Override public void onAuthSucceed() { setupAccessToken(facebookConnector.getFacebook().getAccessToken()); } @Override public void onAuthFail(String error) { Toast.makeText(getApplicationContext(), getString(R.string.error_login), Toast.LENGTH_SHORT).show(); } }; SessionEvents.addAuthListener(listener); facebookConnector.login(); } 

    Code code facebook

     public class FacebookConnector { public void login() { if (!facebook.isSessionValid()) { facebook.authorize(this.activity, this.permissions, new LoginDialogListener()); } } private final class LoginDialogListener implements DialogListener { public void onComplete(Bundle values) { SessionEvents.onLoginSuccess(); } public void onFacebookError(FacebookError error) { SessionEvents.onLoginError(error.getMessage()); } public void onError(DialogError error) { SessionEvents.onLoginError(error.getMessage()); } public void onCancel() { SessionEvents.onLoginError("Action Canceled"); } } } 

    4 Solutions collect form web for “Autorisation Android Facebook – ne peut pas vous connecter lorsque l'application Facebook officielle est installée”

    Veuillez mettre à jour le code ci-dessous de votre application. Cela résoudra votre problème.

     public void loginAndPostToWall() { facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener()); } 

    J'ai eu le même problème que vous. Enfin, j'ai résolu l'utilisation de ceci:

    Ouvrez Facebook.java fourni par le SDK de Facebook, puis changez-le comme ceci:

     public void authorize(Activity activity, String[] permissions, int activityCode, final DialogListener listener) { boolean singleSignOnStarted = false; mAuthDialogListener = listener; /* // Prefer single sign-on, where available. if (activityCode >= 0) { singleSignOnStarted = startSingleSignOn(activity, mAppId, permissions, activityCode); } // Otherwise fall back to the traditional dialog. if (!singleSignOnStarted) { */ startDialogAuth(activity, permissions); // } } 

    C'est juste une supposition sauvage, mais au lieu de cela:

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data); } 

    Essayer:

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data); } 

    Comme vous n'appeliez pas à la méthode parent, certaines choses pourraient ne pas fonctionner comme prévu …

     private static Session openActiveSession(Activity activity, boolean allowLoginUI, StatusCallback callback, List<String> permissions) { OpenRequest openRequest = new OpenRequest(activity).setPermissions(permissions).setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO).setCallback(callback); Session session = new Session.Builder(activity).build(); if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) { Session.setActiveSession(session); session.openForRead(openRequest); return session; } return null; } 

    Modifiez votre fonction openactivesession comme celle-ci

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.