【问题标题】:Does OAuth 2.0 always require a browser in the flowOAuth 2.0 在流程中是否总是需要浏览器
【发布时间】:2019-09-13 04:11:55
【问题描述】:

我可以在没有浏览器(或我的应用程序中的嵌入式浏览器)的情况下使用 OAuth 2.0 来执行夜间上传吗?

设置我有一个来自提供商控制台的刷新令牌和访问令牌——Google Drive API

一旦我最初收到我的刷新/访问令牌,我希望使用 Java SDK 来使用/重用这些来上传数据,而无需任何浏览器授权。

【问题讨论】:

    标签: security oauth oauth-2.0 google-drive-api


    【解决方案1】:

    OAuth 2.0 需要浏览器一次用户同意

    需要浏览器,以便用户同意应用程序访问用户数据的请求。 在用户同意与应用共享数据后,应用可以在没有基于浏览器的流程的情况下使用刷新令牌。

    在此处记录:https://developers.google.com/accounts/docs/OAuth2WebServer

    非浏览器应用的替代方案

    您可以使用OAuth 2.0 for Devices 流程: 您的应用可以充当设备,从 google 查询代码,将其显示给用户,并要求用户浏览到验证 URL(例如,使用 (system.out.println...)。

    因此仍然需要浏览器,但您的应用程序本身不需要向用户提供网页。

    【讨论】:

      【解决方案2】:

      是的。这正是使用刷新令牌进行无人值守访问的目的。当用户授予该应用程序的权限时,他被特别提示“......即使你没有登录”(或类似的,我不记得确切的措辞)。您将刷新令牌存储在服务器上的某个位置,然后在您的应用需要执行操作时使用它来请求访问令牌。

      只是为了澄清您问题中的一些措辞,刷新和访问令牌不会形成一对,所以说“重用这些”实际上应该是“重用这个”,其中“这个”是刷新令牌。

      【讨论】:

      • 好的,太好了,那么为什么在这种情况下会出现“需要登录错误”?我究竟做错了什么? stackoverflow.com/questions/28595677/…
      • 很难说你做错了什么,因为你没有说你在做什么
      • 为什么使用说是?我不认为这是正确的。正如您所说,您至少需要一次同意或在刷新令牌过期时获得同意。所以正确的答案应该是不。
      • @Michael-O 这取决于您是否将问题解释为“我需要浏览器吗?”或“我每晚都需要浏览器吗?” OP 说他已经有一个刷新令牌,所以可以肯定地假设他知道他曾经需要一个浏览器来获取它。他的问题继续解释他在使用刷新令牌时遇到问题,并且他不需要浏览器来使用它 - 因此答案是肯定的。刷新令牌不会过期(在正常情况下)——这就是它们存在的原因。
      • 但是您仍然需要一个浏览器来获取一个并且可以撤销令牌。所以你确实需要一个浏览器。
      猜你喜欢
      • 2019-11-09
      • 2017-11-26
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2014-04-14
      相关资源
      最近更新 更多