Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
三腿OAuth2范围验证问题;Firebase应用程序_Firebase_Google Cloud Platform_Google Cloud Firestore_Google Cloud Iam - Fatal编程技术网

三腿OAuth2范围验证问题;Firebase应用程序

三腿OAuth2范围验证问题;Firebase应用程序,firebase,google-cloud-platform,google-cloud-firestore,google-cloud-iam,Firebase,Google Cloud Platform,Google Cloud Firestore,Google Cloud Iam,我正在尝试验证一个使用谷歌云API管理用户Firestore集合的应用程序。 提交验证后,我收到API开发团队的以下电子邮件: 尊敬的开发商: 感谢您提交以下云范围的OAuth应用验证请求: 三腿OAuth2作用域授权旨在让人类用户授权访问其托管在特定API上的所有数据。访问您请求的OAuth2范围将为Google云平台客户提供过于广泛的访问权限。谷歌云平台仅支持为特定用户/服务授予特定资源,使用云IAM策略控制访问 按照以下说明访问您请求的云范围: 创建一个服务帐户来代表您的服务并访问用户

我正在尝试验证一个使用谷歌云API管理用户Firestore集合的应用程序。 提交验证后,我收到API开发团队的以下电子邮件:

尊敬的开发商:

感谢您提交以下云范围的OAuth应用验证请求:

三腿OAuth2作用域授权旨在让人类用户授权访问其托管在特定API上的所有数据。访问您请求的OAuth2范围将为Google云平台客户提供过于广泛的访问权限。谷歌云平台仅支持为特定用户/服务授予特定资源,使用云IAM策略控制访问

按照以下说明访问您请求的云范围:

  • 创建一个服务帐户来代表您的服务并访问用户的Google云平台项目中的数据

  • 指示您的客户通过IAM策略授予您的服务帐户对其云数据的适当访问权限

  • 请注意,您可能希望为每个客户创建一个服务帐户,以避免出现问题

    我已经有3个服务帐户(我想它们是由GCP或Firebase自动创建的),但我很难理解第二点是什么以及我应该采取什么行动

    该应用程序使用my Firebase API密钥从客户端发出请求,以代表用户读取和写入Firestore集合。以下是我正在使用的范围:

    email
    profile
    openid
    ../auth/cloud-platform.read-only
    ../auth/cloud-platform
    

    我希望应用程序验证过程能够成功完成,这样用户就不会看到“未验证的应用程序”登录时显示屏幕。

    您正试图使用项目的OAuth客户端ID授予自己对客户帐户/数据的访问权限。这是非常危险的,因为您可能会收到身份令牌和刷新令牌,这会使客户难以撤销您的访问令牌。大多数客户/开发人员不知道如何做到这一点

    谷歌正在收紧您可以请求的访问级别。您请求的权限过于特权化。正确的方法是客户通过Google Cloud IAM授予您访问其帐户的权限。这些权限可以是您的Google帐户创建的服务帐户,也可以是您的Google帐户电子邮件地址。这两种方法都要求客户使用IAM授予其GCP帐户的权限

    您的问题可以通过三个步骤解决:

    1)删除以下范围,因为未经审核,谷歌不会批准你的应用程序

    • 云平台。只读
    • 云平台
    注意:如果您只需要访问非常特定的服务,请更改该服务的范围。你可能得不到批准

    2)在您的谷歌云平台帐户中创建一个服务帐户。向每位客户提供您的服务帐户的电子邮件地址。他们需要将电子邮件地址添加到IAM部分下的Google云平台控制台,并分配所需的IAM权限

    注意:您可能希望为每位客户创建一个服务帐户,以提高安全性、隔离性和日志记录

    3)使用服务帐户而不是客户端应用程序


    注意:如果您需要谷歌控制台访问您客户的谷歌云平台帐户,请向他们提供您的谷歌帐户电子邮件地址。他们可以为您的电子邮件地址分配访问其项目控制台所需的权限。

    他们需要将电子邮件地址添加到IAM部分下的Google Cloud Platform控制台,并分配所需的IAM权限。有没有可能不用我的应用程序而不用他们手动完成这些工作?你的应用程序没有权限这样做。你有“鸡还是蛋”,你的应用程序需要权限才能授予你权限。谷歌将不允许你的应用程序拥有这些权限(没有审计)。