我想使用本地应用程序和web服务器来获得刷新令牌,以便用于某些操作(在google驱动器上)。已经使用控制台为本机和web应用程序生成了客户端ids和机密。
我正在尝试从本机应用程序中生成创作代码,并使用一个深受java 示例启发的脚本将它们从web服务器交换为访问/刷新令牌。主要的区别是有两个GoogleAuthorizationCodeFlow (它们代表本机和服务器部分):
然而,这样的过程会导致401个未经授权的异常。
当使用相同的凭据(本机应用程序或web应用程序的GoogleAuthorizationCodeFlows )时,进程成功并返回一个刷新令牌。
如何使用web应用程序上本机应用程序的授权代码来生成访问令牌?是否有一种方法可以使用web应用程序id和机密来交换授权代码,或者必须使用用于生成令牌的相同凭据完成过程?
发布于 2015-05-19 11:08:42
它不起作用的原因是身份验证链接到客户端id和客户端机密。
当用户进行身份验证时,他们将对客户端id /客户端秘密对进行身份验证。您不能只使用刷新令牌或身份验证代码,并将其与不同的客户端id和秘密一起使用,它们将不匹配,也无法工作,您将得到一个401 Unauthorized exception。
你在正确的轨道上
如何使用web应用程序上本机应用程序的授权代码来生成访问令牌?
您需要做的是只创建一个Client ID for native application,并为您的本地应用程序和web应用程序使用客户端id和客户端机密。
网络与本地
Client ID for native application和Client ID for web application之间唯一真正的区别是重定向URI。重定向URI只是告诉身份验证服务器返回身份验证的位置。对于一个简单的网站来说,它是你处理代码的网页,大部分时间,这是相同的ip地址。在本机应用程序的情况下,无法知道这一点,因此服务器将信息发回请求ip。除此之外,除了谷歌喜欢知道它是一个网站还是一个运行代码的已安装的应用程序之外,两者并没有什么区别。因此,您可以在web应用程序上使用本机客户端id,服务器将直接将其返回到它所要求的任何位置。
安全
在web应用程序中使用本机应用程序可能会考虑一些安全问题,我想有人可能会得到它,并使用您的客户端id发送信息。我发现这个机会有限。
https://stackoverflow.com/questions/30323696
复制相似问题