Ошибка приложения AWS AppSync - AWSMobileClientStore.get (String) для ссылки на пустой объект - PullRequest
0 голосов
/ 13 мая 2019
APPSYNC_ERROR: Attempt to invoke virtual method

java.util.Map com.amazonaws.mobile.client.AWSMobileClientStore.get (java.lang.String []) для ссылки на пустой объект

Япытаясь вставить данные в таблицу AWS, но я получил эту ошибку.Можете ли вы помочь мне решить эту проблему?

AWSAppSyncClient client = AWSAppSyncClient.builder()
                .context(context)
                .region(AppHelper.cognitoRegion)
                .serverUrl(AppHelper.SERVER_URL)
                .cognitoUserPoolsAuthProvider(new CognitoUserPoolsAuthProvider() {
                    @Override
                    public String getLatestAuthToken() {
                        try {
                            return AWSMobileClient.getInstance().getTokens().getIdToken().getTokenString();
                        } catch (Exception e){
                            Log.e("APPSYNC_ERROR", e.getLocalizedMessage());
                            return e.getLocalizedMessage();
                        }
                    }
                }).persistentMutationsCallback(new PersistentMutationsCallback() {
                @Override
                public void onResponse(PersistentMutationsResponse response) {
                    Log.d("NOTERROR", response.getMutationClassName());
                }

                @Override
                public void onFailure(PersistentMutationsError error) {
                    Log.e("TAG", error.getMutationClassName());
                    Log.e("TAG", "Error", error.getException());
                }
                }).build();

1 Ответ

1 голос
/ 22 мая 2019

Вам необходимо успешно инициализировать AWSMobileClient перед его использованием.

AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
     @Override
    public void onResult(UserStateDetails userStateDetails) {
        switch (userStateDetails.getUserState()){
            case SIGNED_IN:
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        TextView textView = (TextView) findViewById(R.id.text);
                        textView.setText("Logged IN");
                    }
                });
                break;
            case SIGNED_OUT:
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        TextView textView = (TextView) findViewById(R.id.text);
                        textView.setText("Logged OUT");
                    }
                });
                break;
            default:
                AWSMobileClient.getInstance().signOut();
                break;
        }
    }

    @Override
    public void onError(Exception e) {
        Log.e("INIT", e.toString());
    }
});

Если initialize успешно, вы сможете получить токены с помощью метода getTokens().

Источник: https://aws -amplify.github.io / docs / android / authentication

...