Facebook Callback Войти на Android - PullRequest
0 голосов
/ 24 октября 2019

Я новичок в 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);
    }
...