Auth.currentSession говорит, что текущий пользователь отсутствует - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть базовое приложение реагирования, в котором я пытаюсь выполнить аутентификацию с помощью aws-ampify.У меня есть пользовательский пул в Cognito.Я могу отправить пользователя на хост-интерфейс.Пользователь может войти в систему, но когда я пытаюсь получить текущий сеанс, я получаю сообщение: no current user.

Вот мой код.

import React, { Component } from 'react';
import './App.css';
import Amplify, { Auth } from 'aws-amplify';
import awsmobile from "./aws-exports";

const auth = {
  AppWebDomain: "funnybusty.auth.us-east-2.amazoncognito.com",
  TokenScopesArray: ["phone", "email", "profile", "openid", "aws.cognito.signin.user.admin"],
  RedirectUriSignIn: "http://localhost:3000",
  RedirectUriSignOut: "http://localhost:3000",
  responseType: "token",
  ClientId: "aaaaa",
  UserPoolId: "aaaa",
};

Amplify.configure(awsmobile);
Auth.configure({ oauth: auth });

class App extends Component {

  componentDidMount() {
    Auth.currentSession()
      .then(data => console.log(data))
      .catch(err => console.log(err));
  }

  click = () => {
    const config = Auth.configure().oauth
    const url = 'https://' + config.AppWebDomain + '/login?redirect_uri=' + config.RedirectUriSignIn + '&response_type=' + config.responseType + '&client_id=' + config.ClientId;
    window.location.assign(url);
  }

  render() {
    return (
      <div className="App">
        <button onClick={this.click}>
          Sign in with AWS
          </button>
      </div>
    );
  }
}

export default App;

Где яидет не так?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Оказывается, это была небольшая ошибка в моем коде.Эта строка,

Auth.configure({ oauth: auth });

действительно должна выглядеть следующим образом.

Auth.configure({
    Auth: {
      oauth: auth,
    }
  })

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

Я следил за документами, как я видел здесь , но в документах также упоминается правильный путь здесь .

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

0 голосов
/ 06 февраля 2019

Я никогда не использовал реактив, но заметил несколько вещей:

  1. Вы должны использовать Модуль-концентратор для прослушивания события signIn.В противном случае вы не сможете получить обратно свою информацию о пользователе.
  2. В вашей конфигурации oauth вы должны определить свои redirectSignIn и redirectSignOut с помощью http://localhost:3000/ (/ в конце важен, я выучил это трудным путем ..)
  3. Вы, вероятно, должны переместить ClientId и UserPoolId из вашего const auth как шаблон конфигурации oauth:

    const oauth = {
      domain: 'your_cognito_domain',
      scope: ['phone', 'email', 'profile', 'openid', 'aws.cognito.signin.user.admin'],
      redirectSignIn: 'http://localhost:3000/',
      redirectSignOut: 'http://localhost:3000/',
      responseType: 'code' // or token
    };
    

Для получения дополнительной информации вы можете проверить полный пример, доступный в документации: https://aws -amplify.github.io / документы / JS / аутентификации # делают-это работа в вашем приложении

...