Я новичок в Android и у меня есть вопросы!
У меня проблемы с обратным вызовом Facebook. Когда я вхожу в приложение через Facebook, оно снова возвращает меня к всплывающему окну Facebook и не завершает регистрацию. Но, если я закрою Facebook всплывающее окно после входа в систему, то логин работает. Но я должен закрыть всплывающее окно, и это кажется неправильным.
Что я делаю не так? Кажется, что обратный вызов не работает.
В моем onCreate:
login_button = findViewById(R.id.login_button);
login_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
LoginManager.getInstance().logInWithReadPermissions(CadastroActivity.this, Arrays.asList("public_profile", "email"));
} catch (Exception er) {
Log.d(TAG, "onClick: " + er);
}
}
});
try {
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
getDadosLoginFacebook(accessToken);
}
@Override
public void onCancel() {
Log.d("CadastroActivity", "onCancel: Cancelado");
}
@Override
public void onError(FacebookException exception) {
Log.d("CadastroActivity", "onCancel: Cancelado");
Toast.makeText(CadastroActivity.this, "Ooops! Um erro ocorreu, entre em contato com nossos desenvolvedores!", Toast.LENGTH_LONG).show();
}
});
} catch (Exception er) {
Log.d(TAG, "onCreate: " + er);
}
Функция вызывает getDadosLoginFacebook:
private void getDadosLoginFacebook(AccessToken accessToken) {
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
JSONObject json = response.getJSONObject();
try {
if (json != null) {
String name = json.getString("name");
String email = json.getString("email");
String image = object.getJSONObject("picture").getJSONObject("data").getString("url");
pessoa.setNome(name);
pessoa.setEmail(email);
pessoa.setLinkFoto(image);
/*API Call and Finish*/
MakeRequest();
finish();
}
} catch (JSONException e) {
Log.d(TAG, "onCompleted: " + e);
Toast.makeText(CadastroActivity.this, "Um erro ocorreu ao cadastrar pelo Facebook. Tente novamente mais tarde!", Toast.LENGTH_SHORT).show();
finish();
}
}
});
// GraphRequest usando Bundle
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,picture.width(200)");
request.setParameters(parameters);
// Inicializando a GraphRequest
request.executeAsync();
}
OnActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode,
resultCode, data);
}