Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Google (身份池)

Amazon Cognito 与 Google 集成,以针对移动应用程序用户提供联合身份验证。本部分介绍了如何使用 Google 作为身份提供商来注册和设置应用程序。

Android

注意

如果您的应用程序使用 Google 并将在多个移动平台上提供,则应将其配置为 OpenID Connect 提供商,从而将创建的所有客户端 ID 添加为额外受众值以实现更好的集成。要了解有关 Google 跨客户端身份模式的更多信息,请参阅跨客户端身份

设置 Google

要启用 Google Sign-in for Android,您需要为应用程序创建 Google Developers 控制台项目。

  1. 转到 Google Developers 控制台并创建一个新项目。

  2. APIs and auth > APIs > Social APIs 下,启用 Google API。

  3. APIs and auth > Credentials > OAuth consent screen 下,创建在应用程序请求访问用户的私有数据时将向用户显示的对话。

  4. Credentials > Add Credentials 下,创建适用于 Android 的 OAuth 2.0 客户端 ID。您将需要针对打算为其开发的每个平台 (如 Web、iOS、Android) 提供一个客户端 ID。

  5. 在“Credentials > Add Credentials”下,创建一个服务账户。控制台将提醒您,系统已创建新的公有/私有密钥。

有关使用 Google Developers 控制台的更多说明,请参阅在 Developers 控制台中管理项目

有关将 Google 集成到 Android 应用程序的更多信息,请参阅适用于 Android 的 Google 文档

在 Amazon Cognito 控制台中配置外部提供商

Amazon Cognito 控制台主页中选择管理联合身份

  1. 单击想要针对其启用 Google 作为外部提供商的身份池的名称。此时将显示身份池的“Dashboard”页。

  2. 在“Dashboard”页的右上角,单击“Edit identity pool”。此时将显示“Edit identity pool”页。

  3. 向下滚动并单击“Authentication providers”以将其展开。

  4. 单击“Google”选项卡。

  5. 单击“Unlock”。

  6. 输入从 Google 获取的 Google 客户端 ID,然后单击“Save Changes”。

使用 Google

要在应用程序中启用 Login with Google,请按照适用于 Android 的 Google 文档中的说明执行操作。成功通过身份验证后,将生成一个 OpenID Connect 身份验证令牌,供 Amazon Cognito 用于对用户进行身份验证并生成一个唯一标识符。

以下示例代码显示了如何从 Google Play 服务检索身份验证令牌:

GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); AccountManager am = AccountManager.get(this); Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); String token = GoogleAuthUtil.getToken(getApplicationContext(), accounts[0].name, "audience:server:client_id:YOUR_GOOGLE_CLIENT_ID"); Map<String, String> logins = new HashMap<String, String>(); logins.put("accounts.google.com", token); credentialsProvider.setLogins(logins);

iOS - Objective-C

注意

如果您的应用程序使用 Google 并将在多个移动平台上提供,则应将其配置为 OpenID Connect 提供商,从而将创建的所有客户端 ID 添加为额外受众值以实现更好的集成。要了解有关 Google 跨客户端身份模式的更多信息,请参阅跨客户端身份

要启用 Google Sign-in for iOS,您需要为应用程序创建 Google Developers 控制台项目。

设置 Google

  1. 转到 Google Developers 控制台并创建一个新项目。

  2. APIs and auth > APIs > Social APIs 下,启用 Google API。

  3. APIs and auth > Credentials > OAuth consent screen 下,创建在应用程序请求访问用户的私有数据时将向用户显示的对话。

  4. Credentials > Add Credentials 下,创建适用于 iOS 的 OAuth 2.0 客户端 ID。您将需要针对打算为其开发的每个平台 (如 Web、iOS、Android) 提供一个客户端 ID。

  5. 在“Credentials > Add Credentials”下,创建一个服务账户。控制台将提醒您,系统已创建新的公有/私有密钥。

有关使用 Google Developers 控制台的更多说明,请参阅在 Developers 控制台中管理项目

有关将 Google 集成到 iOS 应用程序的更多信息,请参阅适用于 iOS 的 Google 文档

Amazon Cognito 控制台主页中选择管理联合身份

在 Amazon Cognito 控制台中配置外部提供商

  1. 单击想要针对其启用 Google 作为外部提供商的身份池的名称。此时将显示身份池的“Dashboard”页。

  2. 在“Dashboard”页的右上角,单击“Edit identity pool”。此时将显示“Edit identity pool”页。

  3. 向下滚动并单击“Authentication providers”以将其展开。

  4. 单击“Google”选项卡。

  5. 单击“Unlock”。

  6. 输入从 Google 获取的 Google 客户端 ID,然后单击“Save Changes”。

使用 Google

要在应用程序中启用 Login with Google,请按照适用于 iOS 的 Google 文档中的说明执行操作。成功通过身份验证后,将生成一个 OpenID Connect 身份验证令牌,供 Amazon Cognito 用于对用户进行身份验证并生成一个唯一标识符。

成功通过身份验证后,将生成一个 GTMOAuth2Authentication 对象,其中包含一个 id_token,供 Amazon Cognito 用于对用户进行身份验证并生成一个唯一标识符。

- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth error: (NSError *) error { NSString *idToken = [auth.parameters objectForKey:@"id_token"]; credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyGoogle): idToken }; }

iOS - Swift

注意

如果您的应用程序使用 Google 并将在多个移动平台上提供,则应将其配置为 OpenID Connect 提供商,从而将创建的所有客户端 ID 添加为额外受众值以实现更好的集成。要了解有关 Google 跨客户端身份模式的更多信息,请参阅跨客户端身份

要启用 Google Sign-in for iOS,您需要为应用程序创建 Google Developers 控制台项目。

设置 Google

  1. 转到 Google Developers 控制台并创建一个新项目。

  2. APIs and auth > APIs > Social APIs 下,启用 Google API。

  3. APIs and auth > Credentials > OAuth consent screen 下,创建在应用程序请求访问用户的私有数据时将向用户显示的对话。

  4. Credentials > Add Credentials 下,创建适用于 iOS 的 OAuth 2.0 客户端 ID。您将需要针对打算为其开发的每个平台 (如 Web、iOS、Android) 提供一个客户端 ID。

  5. 在“Credentials > Add Credentials”下,创建一个服务账户。控制台将提醒您,系统已创建新的公有/私有密钥。

有关使用 Google Developers 控制台的更多说明,请参阅在 Developers 控制台中管理项目

有关将 Google 集成到 iOS 应用程序的更多信息,请参阅适用于 iOS 的 Google 文档

Amazon Cognito 控制台主页中选择管理联合身份

在 Amazon Cognito 控制台中配置外部提供商

  1. 单击想要针对其启用 Google 作为外部提供商的身份池的名称。此时将显示身份池的“Dashboard”页。

  2. 在“Dashboard”页的右上角,单击“Edit identity pool”。此时将显示“Edit identity pool”页。

  3. 向下滚动并单击“Authentication providers”以将其展开。

  4. 单击“Google”选项卡。

  5. 单击“Unlock”。

  6. 输入从 Google 获取的 Google 客户端 ID,然后单击“Save Changes”。

使用 Google

要在应用程序中启用 Login with Google,请按照适用于 iOS 的 Google 文档中的说明执行操作。成功通过身份验证后,将生成一个 OpenID Connect 身份验证令牌,供 Amazon Cognito 用于对用户进行身份验证并生成一个唯一标识符。

成功通过身份验证后,将生成一个 GTMOAuth2Authentication 对象,其中包含一个 id_token,供 Amazon Cognito 用于对用户进行身份验证并生成一个唯一标识符:

func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!) { if error != nil { print(error.localizedDescription) } else { let idToken = auth.parameters.objectForKey("id_token") credentialsProvider.logins = [AWSCognitoLoginProviderKey.Google.rawValue: idToken!] } }

JavaScript

注意

如果您的应用程序使用 Google 并将在多个移动平台上提供,则应将其配置为 OpenID Connect 提供商,从而将创建的所有客户端 ID 添加为额外受众值以实现更好的集成。要了解有关 Google 跨客户端身份模式的更多信息,请参阅跨客户端身份

设置 Google

要启用适用于您的 Web 应用程序的 Google Sign-in,您需要为应用程序创建 Google Developers 控制台项目。

  1. 转到 Google Developers 控制台并创建一个新项目。

  2. APIs and auth > APIs > Social APIs 下,启用 Google API。

  3. APIs and auth > Credentials > OAuth consent screen 下,创建在应用程序请求访问用户的私有数据时将向用户显示的对话。

  4. Credentials > Add Credentials 下,创建适用于您的 Web 应用程序的 OAuth 2.0 客户端 ID。您将需要针对打算为其开发的每个平台 (如 Web、iOS、Android) 提供一个客户端 ID。

  5. 在“Credentials > Add Credentials”下,创建一个服务账户。控制台将提醒您,系统已创建新的公有/私有密钥。

有关使用 Google Developers 控制台的更多说明,请参阅在 Developers 控制台中管理项目

在 Amazon Cognito 控制台中配置外部提供商

Amazon Cognito 控制台主页中选择管理联合身份

  1. 单击想要针对其启用 Google 作为外部提供商的身份池的名称。此时将显示身份池的“Dashboard”页。

  2. 在“Dashboard”页的右上角,单击“Edit identity pool”。此时将显示“Edit identity pool”页。

  3. 向下滚动并单击“Authentication providers”以将其展开。

  4. 单击“Google”选项卡。

  5. 单击“Unlock”。

  6. 输入从 Google 获取的 Google 客户端 ID,然后单击“Save Changes”。

使用 Google

要在应用程序中启用 Login with Google,请按照适用于 Web 的 Google 文档中的说明执行操作。

成功通过身份验证后,将生成一个响应对象,其中包含一个 id_token,供 Amazon Cognito 用于对用户进行身份验证并生成一个唯一标识符:

function signinCallback(authResult) { if (authResult['status']['signed_in']) { // Add the Google access token to the Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'accounts.google.com': authResult['id_token'] } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); } }

Unity

设置 Google

要启用适用于您的 Web 应用程序的 Google Sign-in,您需要为应用程序创建 Google Developers 控制台项目。

  1. 转到 Google Developers 控制台并创建一个新项目。

  2. APIs and auth > APIs > Social APIs 下,启用 Google API。

  3. APIs and auth > Credentials > OAuth consent screen 下,创建在应用程序请求访问用户的私有数据时将向用户显示的对话。

  4. 对于 Unity,您需要创建三个 ID:其中两个用于 Android,另一个用于 iOS。在 Credentials > Add Credentials 下:

    • Android:创建一个适用于 Android 的 OAuth 2.0 客户端 ID 和一个适用于 Web 应用程序的 OAuth 2.0 客户端 ID。

    • iOS:创一个适用于 iOS 的 OAuth 2.0 客户端 ID。

  5. 在“Credentials > Add Credentials”下,创建一个服务账户。控制台将提醒您,系统已创建新的公有/私有密钥。

在 IAM 控制台中创建 OpenID 提供商

  1. 接下来,您需要在 IAM 控制台中创建一个 OpenID 提供商。有关如何设置 OpenID 提供商的说明,请参阅使用 OpenID Connect 身份提供商

  2. 当系统提示您输入提供商 URL 时,请输入 "https://accounts.google.com"

  3. 当系统提示您在 Audience 字段中输入一个值时,请输入您在之前步骤中创建的三个客户端 ID 中的任意一个。

  4. 创建提供商后,单击该提供商名称并添加另外两个受众,提供剩余的两个客户端 ID。

在 Amazon Cognito 控制台中配置外部提供商

Amazon Cognito 控制台主页中选择管理联合身份

  1. 单击想要针对其启用 Google 作为外部提供商的身份池的名称。此时将显示身份池的“Dashboard”页。

  2. 在“Dashboard”页的右上角,单击“Edit identity pool”。此时将显示“Edit identity pool”页。

  3. 向下滚动并单击“Authentication providers”以将其展开。

  4. 单击“Google”选项卡。

  5. 单击“Unlock”。

  6. 输入从 Google 获取的 Google 客户端 ID,然后单击“Save Changes”。

安装 Unity Google 插件

  1. 适用于 Unity 的 Google Play Games 插件添加到 Unity 项目。

  2. 在 Unity 中,从 Windows 菜单,使用适用于 Android 和 iOS 平台的三个 ID 配置插件。

使用 Google

以下示例代码显示了如何从 Google Play 服务检索身份验证令牌:

void Start() { PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate(); Social.localUser.Authenticate(GoogleLoginCallback); } void GoogleLoginCallback(bool success) { if (success) { string token = PlayGamesPlatform.Instance.GetIdToken(); credentials.AddLogin("accounts.google.com", token); } else { Debug.LogError("Google login failed. If you are not running in an actual Android/iOS device, this is expected."); } }

Xamarin

注意

Xamarin 平台本身不支持 Google 集成。目前,进行集成需要使用 Web 视图来完成浏览器登录流程。要了解 Google 集成如何与其他开发工具包配合使用,请选择另一个平台。

要在应用程序中启用 Login with Google,您将需要对用户进行身份验证并从其获取 OpenID Connect 令牌。Amazon Cognito 使用此令牌生成与 Cognito 身份关联的唯一用户标识符。遗憾的是,适用于 Xamarin 的 Google 开发工具包不允许检索 OpenID Connect 令牌,因此,您需要使用替代客户端或 Web 视图中的 Web 流程。

拥有令牌后,您可以在 CognitoAWSCredentials 中对其进行设置:

credentials.AddLogin("accounts.google.com", token);

注意

如果您的应用程序使用 Google 并将在多个移动平台上提供,则应将其配置为 OpenID Connect 提供商,从而将创建的所有客户端 ID 添加为额外受众值以实现更好的集成。要了解有关 Google 跨客户端身份模式的更多信息,请参阅跨客户端身份