3

我在网络服务器上使用 oauth2 并且流程完美无缺(https://developers.google.com/accounts/docs/OAuth2WebServer)。

但是,在某些情况下,我需要重新获取 refresh_token(例如,refresh_token 已“丢失”)。

在这种情况下,当我再次经历第 1 和第 2 阶段时,我只会得到一个 access_token 而不是一个 refresh_token。如果用户通过他的谷歌帐户控制台撤销权限并再次通过阶段 1 和 2,我将获得一个新的 refresh_token。

这是已知的 oauth2 行为吗?有没有办法强制一个新的 refresh_token 或再次获得相同的?

4

2 回答 2

8

https://developers.google.com/accounts/docs/OAuth2WebServer

重要提示:当您的应用程序接收到刷新令牌时,请务必存储该刷新令牌以供将来使用。如果您的应用程序丢失了刷新令牌,则必须重新提示用户同意,然后才能获取另一个刷新令牌。如果您需要重新提示用户同意,请在授权码请求中包含approval_prompt参数,并将值设置为强制。

于 2012-05-24T16:41:30.837 回答
0

黄油答案在这里。您必须approval_prompt=force在令牌的发布请求中添加参数。

于 2013-11-26T12:41:31.980 回答