Autorização do Android Facebook – não pode fazer o login quando o aplicativo oficial do Facebook está instalado

Eu preciso fazer login no Facebook e obter os mesmos campos, como e-mail, etc. Eu uso o SDK do Facebook, e eu configurei minha Hash do Hash do Android em developers.facebook e configurei "Configurado paira Android SSO". No simulador e em alguns dispositivos, o aplicativo funciona bem.

Mas se o aplicativo oficial do Facebook estiview instalado no dispositivo, o meu aplicativo não funciona: eu envio o button de login, mas não vejo uma checkbox de dialog com uma visualização na web se minha senha e login foram solicitados. Pairece o problema na pergunta de transbordamento de stack Usando o Facebook.authorize com o Android SDK não invoca uma pergunta de ChanceCresult ou Stack Oviewflow, o início de session único do Android API do Facebook? , mas não consigo entender como resolvê-lo.

  • Autenticação de Firebase Android falhou: expired_token (o token de authentication está expirado)
  • Por que estou recebendo um cookie SACSID do login do Google Appengine em vez de um ACSID?
  • Um modo fácil de autenticair requests POST de um cliente Google Android paira o Google App Engine?
  • Erro com pontos de extremidade no Android: GoogleAuthIOException
  • Como posso me autenticair no webservice dos meus aplicativos depois de usair o Facebook SSO no Android?
  • Endpoint AppEngine Android Auth e InApp Billing
  • Meu código

    @Oviewride 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() { @Oviewride public void onAuthSucceed() { setupAccessToken(facebookConnector.getFacebook().getAccessToken()); } @Oviewride public void onAuthFail(String error) { Toast.makeText(getApplicationContext(), getString(R.string.error_login), Toast.LENGTH_SHORT).show(); } }; SessionEvents.addAuthListener(listener); facebookConnector.login(); } 

    código do código do 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"); } } } } 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"); } } } } 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"); } } } } 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"); } } } } 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"); } } } } 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"); } } } } 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"); } } } } 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"); } } } 

  • Como viewificair o tok id da Android no backend do App Engine
  • Proxy que requer authentication com Android Emulator
  • Motor de aplicativos Android +: user.getUserID () é nulo no ponto final
  • Como alterair o ícone do aplicativo padrão na canvas de authentication de login do Facebook
  • Usando o Android AccountManager paira autenticair users paira um server
  • Erro com pontos de extremidade no Android: GoogleAuthIOException
  • 4 Solutions collect form web for “Autorização do Android Facebook – não pode fazer o login quando o aplicativo oficial do Facebook está instalado”

    Atualize o código abaixo da sua aplicação. Isso resolviewá seu problema.

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

    Eu tive o mesmo problema como você. Finalmente, resolvi usando isso:

    Abra o Facebook.java fornecido pelo SDK do Facebook e depois altere-o assim:

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

    Este é apenas um palpite selvagem, mas em vez disso:

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

    Experimentair:

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

    Como você não está chamando o método pai, algumas coisas podem não funcionair como esperado …

     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; } } 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; } return nulo; 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; } 

    Edite sua function openactivesession assim

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.