我真的不能使用客户端ID提供开源代码吗?

开发人员凭据(如密码,密钥和客户端ID)旨在供您使用,并标识您的API客户端。 您将保持您的凭据保密,并做出合理的努力,防止和阻止其他API客户端使用您的凭据。 开发人员凭据可能不会embedded在开源项目中。

( https://developers.google.com/terms/ ,我的重点)

这是否意味着我的开源驱动器命令行客户端需要强制我的软件的每个用户在Google云端控制台中设置一个新项目? 有更好的select吗?

不是很难从非开源中提取客户端ID和客户端“秘密”,为什么区分?

“安装应用程序”客户端ID和秘密并不是真正的秘密,Google文档似乎也认同:

这个过程会产生一个客户端ID,在某些情况下,还会生成一个客户端密钥,并将其embedded到应用程序的源代码中。 ( 在这种情况下,客户的秘密显然不被视为一个秘密。

( https://developers.google.com/accounts/docs/OAuth2 ,再次强调)

2014年11月5日, Google对API的服务条款进行了一些更改 。

就像你我有一个问题,以下行。

要求开发人员做出合理的努力来保护私钥,而不是将其embedded到开源项目中。

我在GitHub上有几个开源项目,他们基本上是使用Google API的教程,一些API仍处于testing阶段,需要时间才能获得testing版访问权限。 我在我的项目中embedded我的客户端ID,以便我的用户能够testing应用程序。

现在我在谷歌有一些联系,所以我希望能在这里得到一些类似的经验。 我设法追查上述罪名变化的作者Dan Ciruli,并给他发了一封电子邮件。

我的电子邮件是相当日志,你可以在这里阅读: 服务的变化

长话短说没有,你不能释放你的客户端ID与您的开源项目在这里丹的电子邮件回到我解释为什么。

但是,你可以让他们在Google眼中“模仿”你。 如果我们的滥用系统检测到滥用行为(例如,如果有人试图使用您的密钥来拒绝我们的服务之一),那么您将面临由于滥用系统而终止您的帐户的风险(请注意 – 键,他们会closures您的控制台帐户)。 此外,您已被授予列入白名单的API访问权限(一般情况下,需要同意单独的服务条款),并且将访问权限分享给任何需要它的人员。 毫无疑问,这是违反这些条款。 对不起,没有你正在寻找的答案,但钥匙是我们必须告诉谁是调用我们的服务的一种方式。

这只是他的电子邮件的一部分给我。 你可以在上面的链接阅读完整的文章。 所以,如果你给他们的源代码,他们可以看到客户端ID。 您的用户将不得不在Google云端控制台上创build自己的项目。 这是没有办法的。

我希望这有助于。

有一个更好的select,它被称为OAuth 2.0dynamic客户端注册。 这仍然是一个正在进行的工作: https : //tools.ietf.org/html/draft-ietf-oauth-dyn-reg-21 ,供应商可能需要一段时间来采纳和实施它。

编辑:

使用开放源码应用程序发送authentication机密绝对不可能。 [老实说,把它们与任何应用程序一起运送是没有意义的。 对于开放源代码的应用程序来说,这更明显。