1

我正在使用React Native构建移动应用程序。借助此库https://github.com/AirLabsTeam/react-native-aws-cognito-js,我可以通过应用程序注册并登录用户,并且Cognito会将访问令牌返回给应用程序。验证/验证来自Rails的AWS Cognito访问令牌

现在,应用程序将使用此令牌对Rails后端进行api调用。 (对于每个API调用)

1)Rails如何验证令牌是否良好?

2)如何获取用户电子邮件?

3)是否有AWS的API端点?

4)有没有类似这样的例子吗?

谢谢

回答

0

我可能已经找到了一种方法来做到这一点。

1)添加到您的Gemfile:

gem 'aws-sdk', '~> 2' 

2)添加这3 ENV变量:

export AWS_REGION=us-west-2 
export AWS_ACCESS_KEY_ID="Your AWS Access Key ID" 
export AWS_SECRET_ACCESS_KEY= "Your AWS Secret Access Key" 

3)创建一个新文件。我把以下内容放在app/modules/Aws.rb中

require 'aws-sdk' 

cognitoidentityprovider = Aws::CognitoIdentityProvider::Client.new(region: ENV['AWS_REGION']) 

begin 
    cognito_user = cognitoidentityprovider.get_user({ 
    access_token: "Token coming from the APP" 
    }) 

    email_verified = cognito_user.user_attributes 
           .detect{ |attribute_type| attribute_type["name"] === "email_verified" && attribute_type["value"] === "true" } 

    if email_verified.nil? 
    raise "Email is not verified" 
    else 
    puts "EMAIL IS GOOD!" 
    puts cognito_user.username 
    end 

rescue StandardError => msg 
    puts "ERROR!" 
    puts msg 
end 

我可以在用irb测试时返回用户邮件。

不知道这是否是正确的方式(或AWS方式)获取用户电子邮件....我会很感激任何评论或反馈...