我在网络服务器上使用oauth2,流程完美无瑕(https://developers.google.com/accounts/docs/OAuth2WebServer)。
但是,我在某些情况下需要重新获取refresh_token(比方说,例如,refresh_token已“丢失”)。
在这种情况下,当我再次进入第1阶段和第2阶段时,我只获得了access_token而不是refresh_token。 如果用户通过他的Google帐户控制台撤消权限并再次进入第1阶段和第2阶段,我将获得一个新的refresh_token。
这是已知的oauth2行为吗?有没有办法强制新的refresh_token或再次获得同一个?
答案 0 :(得分:8)
来自https://developers.google.com/accounts/docs/OAuth2WebServer:
重要提示:当您的应用程序收到刷新令牌时,存储该刷新令牌以供将来使用非常重要。如果您的应用程序丢失了刷新令牌,则必须在获得另一个刷新令牌之前重新提示用户同意。 如果您需要重新提示用户同意,请在授权代码请求中包含approval_prompt参数,并将值设置为强制。
答案 1 :(得分:0)
黄油答案是here。您必须在令牌的发布请求中添加参数approval_prompt=force
。