Oauth 2.0 当请求刷新令牌时,Dropbox OAuth2 API始终提示用户请求权限

Oauth 2.0 当请求刷新令牌时,Dropbox OAuth2 API始终提示用户请求权限,oauth-2.0,dropbox,Oauth 2.0,Dropbox,我正在编写一个使用Dropbox API的脱机应用程序。当用户访问应用程序时,我使用的是https://api.dropbox.com/oauth2/token()以获取刷新\u令牌,我将其存储以供以后使用 每次用户登录时,我都调用同一个端点(除非我已经在cookie中获得了用户的数据)。我不确定这是否是最好的方法:我至少需要获得用户的帐户id,这样我就可以在数据库中查找他们的刷新令牌。但每次我打电话https://api.dropbox.com/oauth2/token,用户被重定向到Drop

我正在编写一个使用Dropbox API的脱机应用程序。当用户访问应用程序时,我使用的是
https://api.dropbox.com/oauth2/token
()以获取
刷新\u令牌
,我将其存储以供以后使用

每次用户登录时,我都调用同一个端点(除非我已经在cookie中获得了用户的数据)。我不确定这是否是最好的方法:我至少需要获得用户的
帐户id
,这样我就可以在数据库中查找他们的
刷新令牌
。但每次我打电话
https://api.dropbox.com/oauth2/token
,用户被重定向到Dropbox应用程序授权界面,就好像他们以前从未批准过该应用程序一样

因此,我想知道如何阻止Dropbox每次都强迫用户重新授权应用程序。或者,如果这只是
https://api.dropbox.com/oauth2/token
应该可以工作,我希望在他们访问我的页面时,能够以某种方式获得他们的
帐户id

(如果相关,应用程序此时仍处于开发模式。)

端点是OAuth端点,应用程序可以调用该端点以获取访问令牌/刷新令牌。作为API端点,它本身不会将用户重定向到Dropbox应用程序授权页面

Dropbox应用程序授权页面位于(),应用程序决定是否/何时指导那里的用户授权应用程序

对于“脱机”应用程序,通常每个用户只需通过应用程序授权流向用户发送一次(将用户发送到,然后调用)。一旦这样做,您应该为该用户存储生成的刷新令牌。您通常会将该用户的刷新令牌绑定到其用户帐户,并存储在您自己的应用程序中


您在自己的应用程序中管理用户帐户的具体方式将取决于其构建方式,但是,由于这听起来像是一个web应用程序,通常您会在用户返回页面时使用用户的浏览器cookie来识别用户,以便您可以在数据库中查找用户并检索其详细信息,例如它们对应的刷新令牌。(或者,如果他们还没有登录到你的web应用程序,你会让他们先登录。)

格雷格的回答非常有帮助,非常有礼貌地解决了我对身份验证流程的误解。(我在重温多年前编写的旧代码,显然我应该比以前更好地记录它!)


最后,我相信Dropbox迫使我重新授权,因为我的应用程序处于开发模式,并且用户基数很小。当我在设置为生产模式的应用程序中使用相同的代码时,它停止强迫我重新授权。因此,“问题”实际上是Dropbox的安全功能,解决方案只是使用生产模式。

这是一个很好的解释,谢谢。你是对的,我完全误解了
https://api.dropbox.com/oauth2/token