Google Marketplace - 安装应用程序和访问令牌

时间:2014-03-06 13:49:49

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

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

问题:我是否应该在此安装过程中的某个时刻获取并存储refresh_token

Install URL that I can specify in Drive SDK但我无法找到有关Google何时发布此安装网址以及发布内容的文档。

enter image description here

2 个答案:

答案 0 :(得分:2)

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

查看名为“Cached Credentials”的部分

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

摘自以上网址:

如果用户允许访问,授权服务器将返回授权代码。它可以通过调用应用程序打开的Web服务端点的Google服务器或发送回浏览器的页面标题发回。由于卷绕Web服务器,通过任何可能的防火墙等打开连接的挑战......安装的应用程序更容易从生成的网页的标题中刮取授权代码。这是示例项目中使用的技术。如果成功,标题将设置为Success code = xxxxxxxxx,其中xxxx由唯一授权代码替换。

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

答案 1 :(得分:1)

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

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

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

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

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

希望这会有所帮助。我们很快会在某个时候发布一些端到端的样本。