Oauth 我真的可以不使用客户端ID发布开源吗?

Oauth 我真的可以不使用客户端ID发布开源吗?,oauth,google-api,open-source,google-oauth,clientid,Oauth,Google Api,Open Source,Google Oauth,Clientid,开发人员凭据(如密码、密钥和客户端ID)旨在供您使用并标识您的API客户端。您将对您的凭据保密,并尽合理努力防止和阻止其他API客户端使用您的凭据开发人员凭据不能嵌入到开源项目中。 (,我的重点) 这是否意味着我的开源驱动器命令行客户端需要强制我的软件的每个用户在谷歌云控制台中设置一个新项目?有更好的选择吗 从非开源代码中提取客户机ID和客户机“秘密”并不困难,为什么会有区别呢 “安装应用程序”客户端ID和机密并非真正的机密,谷歌文档似乎同意: 该过程会产生一个客户机ID,在某些情况下还会产生一

开发人员凭据(如密码、密钥和客户端ID)旨在供您使用并标识您的API客户端。您将对您的凭据保密,并尽合理努力防止和阻止其他API客户端使用您的凭据开发人员凭据不能嵌入到开源项目中。

(,我的重点)

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

从非开源代码中提取客户机ID和客户机“秘密”并不困难,为什么会有区别呢

“安装应用程序”客户端ID和机密并非真正的机密,谷歌文档似乎同意:

该过程会产生一个客户机ID,在某些情况下还会产生一个客户机机密,您可以将其嵌入到应用程序的源代码中。(在此上下文中,客户端机密显然不被视为机密。


(,再次强调)

有一个更好的选项,它被称为OAuth 2.0动态客户端注册。不过,这项工作仍在进行中:提供商可能需要一段时间来采用和实施它

编辑: 绝对不可能用开源应用程序发布身份验证机密。[老实说,随任何应用程序一起发布都没有意义;开源应用程序更明显。]

2014年11月5日

和你一样,我对下面这句话也有意见

要求开发商做出合理的努力保持其私有 密钥是私有的,不能嵌入到开源项目中

我在GitHub上有几个开源项目,它们基本上都是使用Google API的教程,一些API仍处于测试阶段,需要时间才能访问测试版。我在我的项目中嵌入了我的客户id,以便我的用户能够测试应用程序

现在我在谷歌有一些联系人,所以我希望我能在这里得到某种特许。我设法找到了上述令人不快的服务变更的作者丹·西鲁利,并给他发了一封电子邮件

我的电子邮件非常详细,您可以在此处阅读:

长话短说,不,你不能用你的开源项目发布你的客户id。这里是Dan给我的电子邮件,解释了原因

然而,你允许他们在谷歌眼中“模仿”你。 如果我们的虐待系统检测到虐待行为(比如,是否有人尝试这样做 如果我们的服务使用您的密钥),您将冒着他们将 因此终止您的帐户(请注意,他们不会 只要切断对钥匙的访问,他们就会关闭你的控制台 账户)。此外,您还被授予访问API的白名单权限 公众无法获得的信息(并且 需要同意单独的服务条款)并共享 访问任何想要它的人。毫无疑问,这是一种违反 这些条款的一部分。很抱歉没有你想要的答案,但是 钥匙是我们辨别谁在呼叫我们服务的唯一方法

这只是他给我的电子邮件的一部分。你可以在上面的链接中阅读全文。因此,如果你给他们源代码,他们可以看到客户端id。你的用户将不得不在谷歌云控制台上创建自己的项目。这是没有办法的


我希望这能有所帮助。

这个问题涉及谷歌Oauth。这不支持你的想法。这是如何回答这个问题的呢?事实上,将凭据放在开源和封闭源代码中并没有真正的区别,这就是为什么我不能理解这个策略的原因。无论哪种方式,您都可以提取并重用它。从封闭源代码cq中提取它们稍微困难一些。二进制文件,显然这就是谷歌的底线;模糊处理技术可能也有帮助(尽管政策没有提到这一点);除此之外,在动态客户端注册出现之前,本地移动应用程序的替代方案没有任何好处(这就是为什么我认为提及它是有意义的…)好吧,如果“帮助”是指在我希望找到一个好的解决方案的棺材上钉上钉子,那么是的。唉,原来是这样的。谢谢你的回答,对不起。如果这有帮助的话,你不是唯一一个被它咬过的人。我已经和其他几个人聊过了。任何用于WordPress的php插件都会遇到这个问题。Google自己关于设置Google登录()的说明指示您将客户端id放入标记中,这意味着它是公共的。显然,客户机密不应该放在代码中,但客户id是公开的,不是吗?(如果这是旧的,很抱歉)我看不到对bebop评论的回答。我不明白为什么客户ID应该是“秘密”的,因为我可以通过点击“谷歌登录”访问上述网站轻松获取任何我想要的客户ID。它就在URL中。这是不可能隐藏的!?也许我应该开始一个新的问题,特别是关于这个问题。@Bernard你有问题吗?我投票结束这个问题,因为它是关于许可或法律问题,而不是编程或软件开发。有关详细信息,请参阅。