我想为服务http://quote.fm为自己(学习目的)构建一个小应用程序。它们提供带有请求令牌和授权URL的oAuth 2.0 Api。
我如何使用这个api的抄写员?我在抄写员wiki中找到this site,但它只解释了如何添加oAuth 1.0a api(?)
有什么建议吗?谢谢!
问候,
克里斯
编辑
尝试使用DefaultApi20类实现api但我现在卡在GetRequestToken
调用中导致异常:
java.lang.UnsupportedOperationException: Unsupported operation, please use 'getAuthorizationUrl' and redirect your users there
OAuthHelper
private OAuthService service;
private Token requestToken;
private String AuthUrl;
public OAuthHelper() {
service = new ServiceBuilder()
.provider(QuoteFmApi.class)
.apiKey("...")
.apiSecret("...")
.callback("quotefmsharetoread://authed")
.build();
}
public void GetRequestToken() {
requestToken = service.getRequestToken();
}
public String GetAuthUrl() {
AuthUrl = service.getAuthorizationUrl(requestToken);
return AuthUrl;
}
QuoteFmApi.class:
public class QuoteFmApi extends DefaultApi20 {
private static final String AUTHORIZATION_URL =
"https://quote.fm/labs/authorize?client_id=%s&redirect_uri=%s&scope=%s&response_type=code";
@Override
public String getAuthorizationUrl(OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, config.getApiKey(), config.getCallback(),
config.getScope());
}
@Override
public String getAccessTokenEndpoint()
{
return "https://quote.fm/api/oauth/token";
}
@Override
public AccessTokenExtractor getAccessTokenExtractor()
{
return new JsonTokenExtractor();
}
答案 0 :(得分:2)
在Scribe中实现对其他OAuth 2提供程序的支持与wiki中描述的方式非常相似。
你基本上必须像DefaultApi20
一样实现other providers的子类。您可以使用implementation for Google作为蓝图,因为他们可能使用类似的OAuth 2草稿作为报价。
请注意,我指向Thomas Bruyelle's fork of Scribe,因为后来的OAuth 2规范草稿要求original Scribe仍然lacks some features,而Quote似乎也需要这些。