分布式自托管软件包中的Google OAuth2抱怨redirect_uri

时间:2015-05-19 22:27:44

标签: oauth google-api google-oauth google-oauth2

我已经开始为内容管理平台开发Google AnalyticsAPI仪表板,并将代码升级为使用OAuth2,因为最近禁用了较旧的oauth。身份验证流程和后续API调用在localhost进行开发时都正常工作。

问题是从其他域尝试代码时。 Google希望redirect_uri通过开发者控制台列入白名单,如果不存在,则会抛出Error: redirect_uri_mismatch

由于这是一个自托管(+ 开源)软件包,人们可以在自己的服务器上安装,我无法添加所有可能的{{ 1}}值到开发者控制台中的app键。

经过一堆谷歌搜索并试图理解文档后,我得到的印象是有两种可能的解决方案。

  1. 指示用户转到Google Developer控制台,并在通过分布式应用中的OAuth2流程之前创建自己的应用密钥,以提供代码访问权限Google Analytics中的数据。

  2. 将redirect_uri值redirect_uri与已安装的应用密钥配合使用,指示用户在验证后将代码复制/粘贴回自托管应用。

  3. 这些都不是真正有吸引力,因为它为用户增加了一堆复杂性(尽管选项2听起来很可行)。还有其他选择,还是我只是简单地忽略了一些东西?

1 个答案:

答案 0 :(得分:1)

你实际上在这件事上没有任何选择。你必须使用nr 1.当你说这是一个仪表板和Web应用程序时,它让我相信这是一种脚本语言。这意味着客户端ID和客户端密钥将显示给您的用户/客户。这违反了谷歌的服务条款。

  

Changes to the Google APIs Terms of Service
要求开发人员   做出合理的努力来保密他们的私钥,而不是   将它们嵌入开源项目中。

您可能不会向自己必须创建的用户发布您的客户端ID和客户端密码。哪个很好地解决了他们必须拥有的重定向URI问题。

进一步阅读Can I really not ship open source with Client ID?