【问题标题】:Why Doesn't AWS let me authenticate with Google Plus?为什么 AWS 不允许我使用 Google Plus 进行身份验证?
【发布时间】:2015-10-12 04:03:21
【问题描述】:

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

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

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

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

请有人帮忙:)

【问题讨论】:

    标签: android amazon-web-services amazon-iam amazon-cognito google-plus-signin


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,鲍勃,感谢您的宝贵时间!我还是有点困惑。这在我使用 Facebook 和 Google Plus 的已验证用户的 IAM 角色中看起来是否正确? s29.postimg.org/cr6mb3b9j/Capture.pngs14.postimg.org/9bthibem9/Capture2.png
    • @Nickmccomb 您不需要修改角色。您需要创建一个 OpenId Connect 提供程序。
    • 嗨鲍勃,它仍然对我不起作用,我不确定为什么它不起作用。第 3 步中的其他客户端 ID 是什么?这是我的 Google Developers Console - My App - Credentials - oAuth Service Account 中的 Service ID 吗?我会错过什么?我从 Google 取回了令牌,但 Cognito 给了我一个身份验证错误
    • @Nickmccomb 额外的客户端 ID 将是您在 Google 控制台中看到的所有客户端 ID。如果您只有 Android 和服务器应用程序,那么只有这 2 个。您确定您实际上是在发送 ID 令牌吗?如果您仍然遇到问题,请使用您获取 Google 令牌的代码更新您的问题。
    【解决方案2】:

    几天后我做到了!我的 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 上进行登录。谷歌的class helper 来Games 登录了,所以我也改用Plus 登录了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-25
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      相关资源
      最近更新 更多