java - scribe 在 oauth 2.0 中不支持 refresh_token 对吗?

标签 java oauth-2.0 scribe

我发现 scribe不提取访问 token 中的 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);

其中包含 token secret 。

但是在OAuth2.0中,没有token secret,而是refresh_token。抄写员只是忽略它:

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);
}

这会导致问题。访问 token 将来可能会过期。我必须在每次登录时通过保存的刷新 token 来刷新访问 token ,但是没有办法直接获取它。

我计划改进 scribe 添加此功能(这并不难)...但是有人已经这样做了吗?

最佳答案

你说的是真的。 Scribe 不会为您的访问 token 提供 refresh 方法。 Scribe 旨在简化 OAuth 签名。 OAuth2.0 非常简单,如果每个人都在做 OAuth2,那么 scribe 就没有意义了(它在 1.0a 流程上大放异彩)。

无论如何,您可以像这样轻松地执行刷新步骤:

OAuthRequest request = new OAuthRequest(Verb.POST, "http://server.example.com/token");
request.addBodyParameter("grant_type", "refresh_token");
request.addBodyParameter("refresh_token", accessToken.getToken()); // were accessToken is the Token object you want to refresh.

request.send();

希望对您有所帮助!

关于java - scribe 在 oauth 2.0 中不支持 refresh_token 对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8772962/

相关文章:

Java BufferedReader 切换大小写同一行存储在数组中

java - 如何为 google pubsub 发布者和订阅者设置超时?

javascript - OAuth2 与 Twitter API 1.1 "Bad Authentication error"

oauth-2.0 - 开发和生产中的 OAuth2

java - 如何在没有人工干预的情况下获取oauth_verifier

java - 有没有办法用 xmlBeans 处理多个 xsd 版本?

java - 如何从特定格式的字符串中提取数字?

azure - 在VPN外部使用Azure自动登录

java - 如何在 scribe oauthrequest 中添加文件参数?

android - 在 Android Studio 中导入 scribe-1.2.1.jar