Можно ли использовать только Amplify Auth в приложении реакции отдельно? - PullRequest
1 голос
/ 07 июля 2019

Я немного новичок в этом. У меня есть веб-приложение, основанное на реакции, и мы использовали аутентификацию с использованием AWS Cognito. Я использовал amazon-cognito-identity-js для регистрации пользователей в пуле пользователей и для входа в систему.

Теперь я пытаюсь заменить эту библиотеку на aws amplify auth из-за ее чистого интерфейса. Но я не хочу проходить процесс установки (усиление init и все остальное), я хочу использовать его так же, как я использовал amazon-cognito-identity-js.

Это то, что я сделал до сих пор,

Я настроил Amplify Auth в моем файле app.js -

import Amplify from 'aws-amplify';

Amplify.configure({
    Auth: {

        // REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID
        identityPoolId: 'my id pool',

        // REQUIRED - Amazon Cognito Region
        region: 'my-region',

        // OPTIONAL - Amazon Cognito User Pool ID
        userPoolId: 'my-userpool',

        // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
        userPoolWebClientId: 'my app client',

        // OPTIONAL - Enforce user authentication prior to accessing AWS resources or not
        mandatorySignIn: true,

        // OPTIONAL - Manually set the authentication flow type. Default is 'USER_SRP_AUTH'
        authenticationFlowType: 'USER_SRP_AUTH'
    }
});

Вот что я сделал, чтобы зарегистрироваться в моем Registration компоненте -

const { username, password, email, name } = this.state;
    try {
        const result = await Auth.signUp({
            username,
            password,
            attributes: {
                'name': name,
                'email': email,
                'phone_number': '',
            },
        });

        this.setState({showVerificationCode: true});
    } catch(e) {

        console.log(e);
    }

Теперь, когда я пытаюсь зарегистрировать пользователя в моем пуле пользователей, он создается, и письмо с подтверждением также было отправлено. Но на стороне клиента я получаю эту ошибку -

enter image description here Может кто-нибудь сказать мне, если возможно, что я пытаюсь? Как вы думаете, я могу использовать только Auth из aws amplify в изоляции на стороне клиента без какого-либо облака или чего-либо еще, чтобы просто зарегистрироваться и войти в пул пользователей?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Это проблема для этого.

Вы правильно поняли, AWS Amplify добавляет Analytics. Но вместо того, чтобы настраивать его с отключенной Google Analytics, как вы это сделали, предлагаем исправить модульный импорт:

import Amplify from '@aws-amplify/core';
import Auth from '@aws-amplify/auth';

Если вы делаете

import Amplify from 'aws-amplify';

автоматически загружает Auth, что приводит к ошибке.

1 голос
/ 08 июля 2019

Хорошо, я выяснил, почему произошла ошибка. Я записываю как ответ, чтобы люди, которые наткнулись на это, могли получить ответ -

Похоже, aws amplify использует службу Analytic по умолчанию и пытается регистрировать события 'auth'. Поэтому мне нужно было отключить его в конфиге -

Amplify.configure({
    Auth: {

        // REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID
        identityPoolId: 'my id pool',

        // REQUIRED - Amazon Cognito Region
        region: 'my-region',

        // OPTIONAL - Amazon Cognito User Pool ID
        userPoolId: 'my-userpool',

        // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
        userPoolWebClientId: 'my app client',

        // OPTIONAL - Enforce user authentication prior to accessing AWS resources or not
        mandatorySignIn: true,

        // OPTIONAL - Manually set the authentication flow type. Default is 'USER_SRP_AUTH'
        authenticationFlowType: 'USER_SRP_AUTH'
    },

    Analytics: {
        disabled: true.
    }
});
...