使用 OAuth 2.0 客户端 ID 为不同项目创建一个或多个凭据?

Posted

技术标签:

【中文标题】使用 OAuth 2.0 客户端 ID 为不同项目创建一个或多个凭据?【英文标题】:Create one or multiple credentials for different projects using OAuth 2.0 client IDs? 【发布时间】:2018-08-31 11:41:55 【问题描述】:

我首先在 Google developer console 上创建了一个 Google API 项目,并将 OAuth 2.0 客户端 ID 配置为凭据,以便让我的 C# 项目访问 Google Drive。

但是,我是使用 Google API 进行开发的新手,我无法理解何时应该创建新的凭据或项目。

我应该创建多个凭据(可能为一个项目创建一个凭据?)还是实际上可以为多个项目使用相同的凭据?创建多个凭证的目的是什么?

【问题讨论】:

【参考方案1】:

如果您要创建不同的应用程序,那么您应该在谷歌开发者控制台上创建不同的项目,每个项目都有自己的一组凭据。

这样做的原因是为了确保您不会遇到任何配额问题。它还允许 Google 跟踪谁在使用他们的数据以及使用了多少。

您还应该考虑在定义项目和创建凭据时为其命名。当用户对您的应用程序进行身份验证时,他们将授予对 Super app one 的访问权限以使用他们的数据,如果您将此客户端与 Super app two 一起使用,那么他们将不知道谁可以访问他们的数据。

我的个人规则

    每个应用程序都是 Google 开发者控制台上的一个项目。 在该项目中,我为本地、测试和生产环境创建了一个客户端 ID。

关于项目创建配额的评论更新

我目前的项目配额

您的配额中还有 37 个项目。了解更多。

您总是可以要求其他项目尽早完成,因为我记得花了一周左右的时间才拿到它们。 Project quota requests

更新使用情况,然后为同一项目创建多个凭据

就像我之前提到的,如果您在不同的项目中使用相同的项目作为凭证,那么您将错过领导用户的机会。我用箭头标记的字段表示APPLICATION,它们特定于请求访问的应用程序。它们是项目本身的一部分。在该项目下创建的所有客户都将使用相同的同意屏幕。如果您将它用于两个不同的应用程序,那么您就是 IMO 错过了引导用户使用他们授予访问其数据的应用程序的权限。

您也可能会错过领导 Google,因为我相信 TOS 需要每个应用程序一个项目提出请求,因此同意屏幕具有应用程序名称和指向应用程序联系人的链接。但是我认为我需要再次阅读 TOS 文档以确保这是一项要求。

您也更有可能达到配额限制。很多限制是基于项目的而不是基于凭据的,因此如果您有两个应用程序从同一个 api 读取,并且在同一个项目下创建了两个不同的凭据。与为每个应用程序创建自己的项目相比,您将更快地达到配额。

示例:Google Analytics 示例每天最大项目请求 50000 个。

同一个项目

应用一请求20000 应用两次请求30000

应用程序一和应用程序二现在都被阻止在当天剩余时间发出请求,因为它们的请求总数达到了 50000 个。

两个独立的项目

应用程序一发出 30000 个请求 应用程序 2 发出 50000 个请求。

应用程序 2 现在在一天的剩余时间内被阻止,因为它发出了 50000 个请求。应用程序一继续工作,直到它也达到 50000 个请求。

【讨论】:

谢谢,但是在谷歌开发者项目中有一个项目创建限制(最多 8 个项目)......这对我的项目来说还不够。那么为同一个项目创建多个凭据有什么用呢?谢谢 八个你确定?我现在有 18 个,还有更多空间。当我达到配额时,我只是要求再延长 50 个。检查编辑。您可以随时要求更多。 @tak 你的问题催生了一篇博文,希望你不要介意。 daimto.com/is-your-project-misleading-users 只是为了确保我能正确理解你@DaImTo,你认为适合使用同一个项目但为开发、生产和测试环境制作多个凭据? 你可以个人我不会。尤其是你不希望你在测试和开发中所做的任何事情影响它。但是,随着需要进行应用程序验证的更改,如果您没有将它们放在同一个项目中,您可能需要多次完成该过程

以上是关于使用 OAuth 2.0 客户端 ID 为不同项目创建一个或多个凭据?的主要内容,如果未能解决你的问题,请参考以下文章

为游戏恢复 OAuth 2.0 客户端 ID

Django/tastypie 实现中的 OAuth 2.0 客户端 ID

为啥我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID?

为啥我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID?

google drive Oauth 2.0 for java web application

OAuth 2.0客户端凭据获取用户ID