创建一个 Google API 项目并启用 Google Sign-In API。
创建一个 AWS Cognito 用户池,并在“身份提供者”选项卡下配置 Google 作为“身份提供者”。
在服务器端,创建一个可以验证 Google id_token 的函数,并将其用作 AWS Cognito 身份验证过程的一部分。以下是一个示例代码片段(使用 Node.js):
const {OAuth2Client} = require('google-auth-library');
const AWS = require('aws-sdk');
const client = new OAuth2Client(CLIENT_ID);
exports.handler = async (event, context, callback) => {
const token = event.headers['Authorization'].split(' ')[1];
const ticket = await client.verifyIdToken({
idToken: token,
audience: CLIENT_ID,
});
const payload = ticket.getPayload();
const userid = payload['sub'];
var params = {
UserPoolId: 'USER_POOL_ID',
Username: userid,
UserAttributes: [
{
Name: 'email',
Value: payload.email,
},
],
};
const cognito = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});
await cognito.adminCreateUser(params).promise();
// use Cognito API to sign the user in and get a JWT access token
// ...
const response = {
statusCode: 200,
body: JSON.stringify(payload),
};
callback(null, response);
};
此示例验证了传入的 Google id_token 并创建了一个新的 Cognito 用户。最后一步是利用 Cognito API 签约用户,并获取访问令牌。