我发现scribe没有refresh_token
在访问令牌中提取。
OAuth 1.0 提取器包含:
Preconditions.checkEmptyString(response, "Response body is incorrect. Can't extract a token from an empty string");
String token = extract(response, TOKEN_REGEX);
String secret = extract(response, SECRET_REGEX);
return new Token(token, secret, response);
其中包含令牌秘密。
但是在 OAuth2.0 中,没有令牌秘密,而是refresh_token
取而代之。Scribe 只是忽略它:
Preconditions.checkEmptyString(response, "Cannot extract a token from a null or empty String");
Matcher matcher = accessTokenPattern.matcher(response);
if(matcher.find())
{
return new Token(matcher.group(1), "", response);
}
else
{
throw new OAuthException("Cannot extract an acces token. Response was: " + response);
}
这会导致问题。访问令牌将来可能会过期。我必须在每次登录前通过保存的刷新令牌来刷新访问令牌,但无法直接获取它。
我计划改进抄写员添加此功能(这并不难)...但是有人已经这样做了吗?