Почему я получаю Facebook AccountKitError: 400: Произошла внутренняя ошибка согласованности: 406: Нет токена доступа: не удается получить учетную запись

Я пытаюсь использовать AccountKit Facebook в своем приложении для Android.

Вот мой код:

loginPhoneNumber.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                phoneLogin(view);
            }
        });

    public void phoneLogin(final View view) {
            final Intent intent = new Intent(getBaseContext(), AccountKitActivity.class);
            AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
                    new AccountKitConfiguration.AccountKitConfigurationBuilder(
                            LoginType.PHONE,
                            AccountKitActivity.ResponseType.CODE); // or .ResponseType.TOKEN
            // ... perform additional configuration ...
            intent.putExtra(
                    AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
                    configurationBuilder.build());
            startActivityForResult(intent, APP_REQUEST_CODE);
        }

вот onActivityResult():

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
        if (requestCode == APP_REQUEST_CODE) { // confirm that this response matches your request
            AccountKitLoginResult loginResult = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
            String toastMessage;
            if (loginResult.getError() != null) {
                toastMessage = loginResult.getError().getErrorType().getMessage();
            } else if (loginResult.wasCancelled()) {
                toastMessage = "Login Cancelled";
            } else {
                if (loginResult.getAccessToken() != null) {
                    toastMessage = "Success:" + loginResult.getAccessToken().getAccountId();
                } else {
                    toastMessage = String.format(
                            "Success: ",
                            loginResult.getAuthorizationCode());
                }

                // If you have an authorization code, retrieve it from
                // loginResult.getAuthorizationCode()
                // and pass it to your server and exchange it for an access token.

                // Success! Start your next activity...
                Intent intent = new Intent(SignUpActivity.this, MainActivity.class);
                startActivity(intent);
            }

            // Surface the result to your user in an appropriate way.
            Toast.makeText(
                    this,
                    toastMessage,
                    Toast.LENGTH_LONG)
                    .show();
        }
    }

Все происходит нормально до такой степени, что я получаю проверочный код по SMS, набираю этот код, и MainActivity открывается, появляется всплывающее сообщение об успешном завершении.

Но в моем MainActivity я использую этот код:

com.facebook.accountkit.AccessToken accessToken = AccountKit.getCurrentAccessToken();

        if (accessToken != null) {
            //Handle Returning User
            Toast.makeText(getBaseContext(), "Hello", Toast.LENGTH_SHORT).show();
        } else {
            //Handle new or logged out user
            Intent intent = new Intent(MainActivity.this, SignUpActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            Toast.makeText(getBaseContext(), "sent from 1", Toast.LENGTH_SHORT).show();
        }

который возвращает к экрану SignUp, если accessToken имеет значение null, и это то, что происходит, давая мне эту ошибку: com.facebook.accountkit.internal.LoginManager: No access token: cannot retrieve account, и это также распечатывается в logcat: AccountKitError: 400: An internal consistency error has occurred: 406: No access token: cannot retrieve account

Что здесь не так? Почему я не могу получить здесь accessToken?


person Hammad Nasir    schedule 14.05.2017    source источник


Ответы (1)


Если вы хотите использовать токен доступа в Account Kit, вам нужно изменить сборку конфигурации, используя AccountKitActivity.ResponseType.TOKEN, а не AccountKitActivity.ResponseType.CODE

person Chanel    schedule 22.05.2017