我是否可以在没有浏览器(或应用中的嵌入式浏览器)的情况下使用OAuth 2.0执行夜间上传?
设置我有来自提供商控制台的刷新令牌和访问令牌- Google云端硬盘API
我希望使用Java SDK来使用/重用这些来上传数据,而无需任何浏览器授权,一旦我最初收到我的刷新/访问令牌。
w41d8nur1#
需要浏览器,以便用户可以同意应用程序访问用户数据的请求。用户同意与应用程序共享数据后,应用程序可以使用刷新令牌,而无需基于浏览器的流。记录于:https://developers.google.com/accounts/docs/OAuth2WebServer
您可以使用OAuth 2.0 for Devices流程:您的应用可以作为一个设备,从谷歌查询代码,显示给用户,并要求用户浏览到验证URL(例如,与(system.out.println ...).因此,浏览器仍然是必需的,但应用程序本身不需要向用户提供网页。
5f0d552i2#
是的。这正是使用刷新令牌进行无人值守访问的意义所在。当用户授予应用权限时,系统会特别提示他“......即使您未登录”(或者类似的提示,我记不清确切的措辞了)。您可以将刷新令牌存储在服务器上的某个地方,然后在应用需要执行任务时使用它来请求访问令牌。只是为了澄清您问题中的一些措辞,刷新和访问令牌不构成一对,所以说“重用这些”,实际上应该是“重用这个”,其中“这个”是刷新令牌。
2条答案
按热度按时间w41d8nur1#
OAuth 2.0需要浏览器才能获得用户同意
需要浏览器,以便用户可以同意应用程序访问用户数据的请求。用户同意与应用程序共享数据后,应用程序可以使用刷新令牌,而无需基于浏览器的流。
记录于:https://developers.google.com/accounts/docs/OAuth2WebServer
非浏览器应用程序的替代方案
您可以使用OAuth 2.0 for Devices流程:您的应用可以作为一个设备,从谷歌查询代码,显示给用户,并要求用户浏览到验证URL(例如,与(system.out.println ...).
因此,浏览器仍然是必需的,但应用程序本身不需要向用户提供网页。
5f0d552i2#
是的。这正是使用刷新令牌进行无人值守访问的意义所在。当用户授予应用权限时,系统会特别提示他“......即使您未登录”(或者类似的提示,我记不清确切的措辞了)。您可以将刷新令牌存储在服务器上的某个地方,然后在应用需要执行任务时使用它来请求访问令牌。
只是为了澄清您问题中的一些措辞,刷新和访问令牌不构成一对,所以说“重用这些”,实际上应该是“重用这个”,其中“这个”是刷新令牌。