5

我应该在 Rails 上集成 cognito + ruby​​。

我的用户使用cognito默认登录页面登录并使用 url 参数重定向到我的页面。

https://development-my-site.auth.us-west-2.amazoncognito.com/oauth2/authorize?client_id=62i222222222222&redirect_uri=https://c3ffec02.ngrok.io/auth/cognito/callback&response_type=token&scope=email+openid+profile

重定向后我有参数

id_token=eyJraWQiOiIyYThzTzY3........
&access_token=eyJraWQiOiJDa0I2NGJsUFJKTWZrNGlV.....
&expires_in=3600
&token_type=Bearer

我应该access_token从 url 获取并传递到后端进行用户验证。

在后端我使用 AWS-SDK ```

  def client
    @client ||= Aws::CognitoIdentityProvider::Client.new(region: options.aws_region)
  end

  def get_user_info(params)
    client.get_user(access_token: params['access_token'])
  end

```

但结果我有错误Aws::CognitoIdentityProvider::Errors::NotAuthorizedException (Access Token does not have required scopes):

我应该怎么做才能获取用户信息?

4

1 回答 1

8

您需要将范围添加aws.cognito.signin.user.admin到查询中:

    https://development-my-site.auth.us-west-2.amazoncognito.com/oauth2/authorize?
client_id=62i222222222222
    &redirect_uri=https://c3ffec02.ngrok.io/auth/cognito/callback
    &response_type=token
    &scope=email+openid+profile+aws.cognito.signin.user.admin

并在Allowed OAuth Scopes下的 cognito 控制台中允许它

于 2017-09-27T15:18:27.043 回答