使用GRANT_TYPE=REFRESH_TOKEN时,Dropbox API不返回刷新令牌 [英] Refresh token is not returned from Dropbox API when using grant_type=refresh_token
本文介绍了使用GRANT_TYPE=REFRESH_TOKEN时,Dropbox API不返回刷新令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经使用OAuth 2.0将许多云存储提供商集成到我的应用程序中(Google Drive、Box、Dropbox等)。我正在使用token_access_type=offline
授权并将刷新令牌存储在我的数据库中,以便我可以根据需要获取新的访问令牌。
当我使用Dropbox v2API时,使用grant_type=refresh_token
调用/token
终结点时,在响应中不会同时返回access_token
和refresh_token
。由于某些原因,我只能得到access_token
。
我已经验证了我正在传递刷新令牌,该令牌在我最初使用grant_type=authorization_code
调用/token
时返回给我。我的请求如下所示:
curl https://api.dropbox.com/oauth2/token
-d grant_type=refresh_token
-d refresh_token=<RefreshTokenReturnedFromAuthorizationCodeExchange>
-u <MyAppKey>:<MyAppSecret>
多次发出此请求(使用相同的刷新令牌)每次都会生成一个新的访问令牌,但不会生成刷新令牌。返回的访问令牌似乎按预期工作。这与其他服务提供商不同,似乎也与Dropbox API文档中声明的只要我授权token_access_type=offline
就会返回refresh_token
相矛盾。
Dropbox是否会发布旨在像这样重复使用的刷新令牌?Dropbox刷新令牌是否会过期?
推荐答案
这是预期行为。使用grant_type=refresh_token
时,the Dropbox API /oauth2/token endpoint也不会返回新的刷新令牌。颁发新的刷新令牌是可选的in the OAuth 2 spec:
授权服务器可能会颁发新的刷新令牌
是这样的,而Dropbox API文档确实说:
这实际上只是指最初的如果在调用/OAuth2/Authorize时将TOKEN_ACCESS_TYPE设置为脱机,则响应将包括刷新令牌(REFRESH_TOKEN)。
grant_type=authorization_code
请求,而不是后续的grant_type=refresh_token
请求。我会要求团队更新文档以澄清这一点。
Dropbox API刷新令牌本身不会过期,因此您可以重新使用它们(尽管用户或应用可以随时吊销它们)。
这篇关于使用GRANT_TYPE=REFRESH_TOKEN时,Dropbox API不返回刷新令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文