Autorização do Facebook para Android - não é possível fazer login quando o aplicativo oficial do Facebook está instalado
Eu preciso fazer o login no Facebook e obter os mesmos campos, como e-mail, etc. Eu uso o SDK do Facebook, e eu configurei minha chave Android Hash em developers.facebook e configurei "Configurado para Android SSO". No simulador e em alguns dispositivos, o aplicativo funciona bem.
Mas se o aplicativo oficial do Facebook estiver instalado no dispositivo, meu aplicativo não funcionará: eu pressiono o botão de login, mas não vejo uma caixa de diálogo com uma exibição da Web se minha senha e login forem solicitados. Parece que o problema na questão de estouro de pilhaUsando facebook.authorize com o Android SDK não chama onActivityResult ou pergunta de estouro de pilhaConexão única com a API do Facebook do Android?, mas não consigo entender como resolvê-lo.
Meu código@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();
}
código facebookConnectorpublic 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");
}
}
}