我试图从App Services获取Google的刷新令牌,但我不能。
日志说
2016-11-04T00:04:25 PID [500]详细收到请求:GET https://noteappsvr.azurewebsites.net/.auth/login/google?access_type=offline 2016-11-04T00:04:25 PID [500]详细下载https://accounts.google.com/.well-known/openid-configuration中的OpenID配置
2016-11-04T00:04:25 PID [500]详细下载来自https://www.googleapis.com/oauth2/v3/certs的OpenID发行人密钥
2016-11-04T00:04:25 PID [500]信息重定向:https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=299597639...04000925%26redir%3D&access_type=offline
2016-11-04T00:05:17 PID [500]详细收到请求:GET https://noteappsvr.azurewebsites.net/.auth/login/google/callback?state=nonce%3D5656e1dd...&prompt=none
2016-11-04T00:05:17 PID [500]详细调用外部HTTP端点POST https://www.googleapis.com/oauth2/v4/token。
2016-11-04T00:05:18 PID [500]信息登录已完成' xxxxx@gmail.com'。提供商:' google'。
2016-11-04T00:05:18 PID [500]详细写作' AppServiceAuthSession'网站的cookie' noteappsvr.azurewebsites.net'。长度:728。
2016-11-04T00:05:18 PID [500]信息重定向:https://noteappsvr.azurewebsites.net/.auth/login/done#token=%7B%22authenti...d6ffa9924e5%22%7D%7D
2016-11-04T00:05:50 PID [500]详细收到请求:GET https://noteappsvr.azurewebsites.net/.auth/refresh
2016-11-04T00:05:50 PID [500]详细JWT验证成功。主题:' sid:4fd4f6 ...',发行人:' https://noteappsvr.azurewebsites.net/'。
2016-11-04T00:05:50 PID [500]警告sid:4fd4f6发出的刷新请求失败,因为在令牌存储中找不到刷新令牌。
2016-11-04T00:05:50 PID [500]信息发送回复:403.80禁止
令牌存储中似乎没有刷新令牌,但为什么? 我已经在门户上启用了令牌存储设置。
答案 0 :(得分:0)
如果Google检测到它已经为您的用户提供了刷新令牌,那么除非您明确提示用户同意,否则它不会提供额外的刷新令牌。您可以通过将 prompt = consent 查询字符串参数添加到登录URL来执行此操作。在您的情况下,https://noteappsvr.azurewebsites.net/.auth/login/google?access_type=offline&prompt=consent
尝试此操作,看看是否可以恢复Google刷新令牌。
可以在此处找到有关此行为的Google文档(在HTTP / REST标签下):https://developers.google.com/identity/protocols/OAuth2WebServer#offline
重要:当您的应用程序收到刷新令牌时,存储该刷新令牌以供将来使用非常重要。如果您的应用程序丢失了刷新令牌,则必须在获得另一个刷新令牌之前重新提示用户同意。如果您需要重新提示用户同意,请在授权代码请求中包含prompt参数,并将该值设置为同意。
在正常使用中,刷新令牌不应丢失。如果您遇到丢失的情况,请告诉我。