3

我有一个 Android 项目,我正在尝试使用 Google Plus 向 AWS Cognito 进行身份验证。我已经设置了 Facebook 身份验证并且可以正常工作,但是当我使用 Google Plus 登录时,我得到一个 400:未经授权的错误

目前我必须将我的应用程序设置为“启用对未经身份验证的身份的访问”,以便 Google Plus 用户可以使用它而不会出现未经授权的异常。

我从登录 Google Plus 回来的令牌很好,它还获取用户个人资料和详细信息,所以我认为它与 IAM 以及可能与“编辑身份池”部分中的“Google 客户端 ID”有关AWS 仪表板。

目前,我的 Google Developers Console 中的 OAuth 2.0 服务帐户客户端 ID 作为 AWS 仪表板中“编辑身份池”部分中的“Google 客户端 ID”

有人请帮忙:)

4

2 回答 2

5

由于 Google 处理客户端 ID 的方式,我们实际上建议客户在配置其身份池以进行 Google 登录时使用我们的通用 OpenId Connect 支持。

  1. 转到 AWS IAM 控制台的身份提供商部分
  2. 创建一个 OpenId Connect 身份提供者,提供者 URL 为https: //accounts.google.com,Audience 作为客户端 ID 之一。
  3. 按照步骤创建身份提供者,稍后您将可以选择添加其他客户端 ID。
  4. 转到Amazon Cognito 控制台
  5. 创建或编辑身份池并将 OpenID Connect 身份提供者添加到池中(它应该出现在 OpenId Connect 提供者中)。

如果您稍后添加 iOS 或 Web 支持,请在 Google 控制台中创建新的客户端 ID,并将它们添加到 IAM 控制台中的 OpenId Connect 提供程序。

于 2015-07-22T18:06:57.830 回答
1

几天后我做到了!我的 Cognito 帐户终于与 Google 交谈了 :) 我最大的问题是客户端 ID,其中有两个:

  1. 在 Google 控制台中,我们有小客户端 ID:XXXXXXXXXXXX.apps.googleusercontent.com
  2. 在您可以在 Google 控制台下载的 JSON 文件中,我们有大客户端 ID:client_id:XXXXXXXXXXXX-XXruakXlXXjeXqjXXtvXXXXXXXXXfjn.apps.googleusercontent.com

所以,我把小号放在 Cognito 控制台的 Google+ 客户端 ID 中

我在我的代码中放了一个大的:

String token = GoogleAuthUtil.getToken(appActivity, accounts[0].name,
"audience:server:client_id:XXXXXXXXXXXX-XXruakXlXXjeXqjXXtvXXXXXXXXXfjn.apps.googleusercontent.com");

我在 Helper 类中更改了代码的另一件事,该代码用于在 google 上登录。Google 的班级助手在 Games 中登录,所以我也更改为登录 Plus。

于 2015-11-03T13:14:44.980 回答