スクライブrefresh_token
がアクセストークンを抽出しないことがわかりました。
OAuth1.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);
}
これは問題を引き起こします。アクセストークンは将来期限切れになる可能性があります。ログイン前に保存された更新トークンでアクセストークンを更新する必要がありますが、直接取得する方法はありません。
私はスクライブを改善してこの機能を追加することを計画しました(それは難しいことではありません)...しかし、誰かがすでにこれを行っていますか?