开发人员凭据(例如密码,密钥和客户端ID)旨在供您使用并标识您的API客户端。您将保密您的凭据并做出合理的努力来防止和阻止其他API客户端使用您的凭据。 开发人员凭据可能未嵌入开源项目中。
(https://developers.google.com/terms/,我的重点)
这是否意味着我的开源驱动器命令行客户端需要强制我的软件的每个用户在Google云端控制台中设置新项目?有更好的选择吗?
不喜欢提取客户ID和客户端"秘密"从非开源,为什么区别?
"安装应用程序"客户ID和秘密并不是真正的秘密,Google文档似乎同意:
该过程会生成客户端ID,在某些情况下会导致客户端机密,您将其嵌入应用程序的源代码中。 (在此上下文中,客户端机密显然不被视为机密。)
(https://developers.google.com/accounts/docs/OAuth2,再次强调我的意思)
答案 0 :(得分:25)
2014年11月5日Google made some changes to the APIs terms of Service。
和我一样,我遇到了以下问题。
要求开发商做出合理的努力来保持他们的私密性 密钥私有,而不是嵌入开源项目。
我在GitHub上有几个开源项目,它们基本上是使用Google API的教程,一些API仍处于测试阶段,需要时间才能获得测试版访问权限。我已我的客户ID嵌入到我的项目中,我的用户可以测试应用程序。
现在我在谷歌有一些联系方式,所以我希望我能在这里获得某种特权。我设法找到了上述违规服务变更Dan Ciruli的作者并给他发了一封电子邮件。
我的电子邮件非常简单,您可以在此处阅读:Changes of service
长话短说不,你不能用你的开源项目发布你的客户端ID,Dan的电子邮件回复给我解释原因。
然而,你允许他们在谷歌的眼中“冒充”你。 如果我们的滥用系统检测到滥用行为(比如,有人会尝试使用DoS) 我们的服务使用您的密钥),您冒着他们的风险 因此而终止您的帐户(请注意 - 他们不会 只是切断对密钥的访问,他们会关闭你的控制台 帐户)。此外,您已被授予对API的白名单访问权限 一般公众无法获得(并且很有可能 要求同意单独的服务条款)并分享 访问任何想要它的人。毫无疑问,这是违规行为 这些条款。很抱歉没有你想要的答案,但是 密钥是我们必须告诉谁调用我们服务的一种方式。
这只是他回复给我的电子邮件的一部分。您可以在上面的链接中阅读完整的帖子。因此,如果您向他们提供源代码,他们可以看到客户端ID。您的用户将不得不在Google Cloud控制台上创建自己的项目。没有办法解决这个问题。
我希望这会有所帮助。
答案 1 :(得分:3)
有一个更好的选择,它被称为OAuth 2.0动态客户端注册。这仍然是一项进展中的工作:https://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-21并且提供商可能需要一段时间来采用和实施它。
使用开源应用程序发送身份验证机密是绝对不可能的。 [老实说,用任何应用程序运送它们真的没有意义;对于开源应用程序来说,它更加明显。]