【问题标题】:Google Marketplace - Installing application and access tokensGoogle Marketplace - 安装应用程序和访问令牌
【发布时间】:2014-03-06 13:49:49
【问题描述】:

尝试测试我的市场应用程序的安装过程。谷歌文档说我可以使用控制台中的测试安装流程按钮来测试安装过程。当我单击该按钮时,我会看到授权对话框,然后单击接受。对话框关闭,应用程序安装在我正在测试的域上。

问题:我应该在安装过程中的某个时间点获取并存储refresh_token 吗?

有一个Install URL that I can specify in Drive SDK,但我找不到有关 Google 何时发布到此安装 URL 以及发布内容的文档。

【问题讨论】:

  • 要确认您正在尝试构建安装在域级别的云端硬盘应用(即集成到云端硬盘 UI)?
  • 正确,我正在尝试开发一个集成在 Drive UI 中的 Drive 应用程序。我希望管理员可以为域或单个用户安装它。
  • 有一个与 Google 集成的按钮,专供管理员使用。那么“安装”按钮是否仅适用于个人帐户?

标签: oauth-2.0 google-drive-api google-oauth google-apps google-apps-marketplace


【解决方案1】:

这是一个向您展示如何做到这一点的项目:

查看名为:Cached Credentials 的部分

http://www.codeproject.com/Articles/488185/Working-with-Google-Drive-in-WPF

摘自上述网址:

如果用户允许访问,授权服务器将返回授权码。它可以由 Google 服务器调用由您的应用程序打开的 Web 服务端点发回,也可以在页面标题中发回给浏览器。由于假脱机网络服务器的挑战,通过任何可能的防火墙打开连接等......对于已安装的应用程序来说,简单地从生成的网页标题中刮取授权代码要容易得多。这是示例项目中使用的技术。如果成功,标题将设置为 Success code=xxxxxxxxx,其中 xxxx 将替换为唯一的授权代码。

授权码只会让您受邀参加聚会。就 API 访问而言,您无法使用该代码执行任何操作。授权码必须换成短期访问码和长期刷新码。在 Google.Apis.Authentication.OAuth2 库中有一个名为 NativeApplicationClient 的类。这是授权服务器的包装器,它有一个名为“ProcessUserAuthorization”的方法。该方法将用户授权应用程序访问后我们检索到的授权码转化为访问令牌和刷新令牌。访问令牌是我们手头任务实际需要的,它在 NativeApplicationClient 中维护。它与所有后续 API 调用一起传递。 NativeApplicationClient 的好处是它知道如何验证访问令牌以及令牌的年龄。如果令牌已过期,客户端将使用刷新令牌获取新的访问令牌。这减轻了我们管理令牌生命周期的负担。

【讨论】:

  • 嗨詹姆斯,谢谢你的文章。我的问题是关于将应用程序安装到用户的 Google Drive。当用户通过 Google Marketplace 找到我的应用并单击“安装”时,他们将获得授权屏幕并接受。我应该得到一个代码并将其换成代币。我想在发布应用程序之前测试该过程。测试安装流程按钮应该是这样做的一种方法,但是,正如问题所述,我看到的只是我请求范围的授权屏幕,并且在我单击“接受”后没有任何反应。那么如何测试获取代码和检索令牌呢?
【解决方案2】:

您对refresh_token 的问题的简短回答是 - 不。安装时您不会获得刷新令牌。您必须使用您拥有的服务帐户密钥来请求新的access_token

因此,基本上,Google Apps Marketplace (GAM) 应用的工作方式是让自己获得一个 Service Accountbuild with that 以获得所有授权。服务帐户没有refresh_token,只有全新的access_token。对于消费者安装的应用程序,您应该使用标准的web server flow。这是一个既要成为消费者应用程序又要成为企业应用程序的复杂领域。

当管理员安装您的应用程序时,他/她实质上是授权您的应用程序的服务帐户密钥到他/她的域。

安装应用后,该服务帐户具有full delegated access

关于云端硬盘应用的安装 URL。对于 GAM 应用程序,您可以忽略它。

希望这会有所帮助。我们将很快发布一些端到端示例。

【讨论】:

  • 您对开发人员如何测试以域管理员身份安装应用程序有什么建议吗?还是作为消费者?
  • Google Apps Marketplaxe SDK 的开发者控制台中有一个测试安装按钮。如果您与测试域的管理员帐户共享项目,那么该测试帐户并安装/授权应用程序。这是最好的测试方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2013-07-31
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多