2

我想为服务http://quote.fm为自己(学习目的)构建一个小应用程序。他们提供带有请求令牌和授权 URL 的 oAuth 2.0 Api。

我如何在这个 api 中使用 scribe?我在 scribe wiki 中找到了这个站点,但它只解释了如何添加 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;
}

引用FmAPI.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();
}
4

1 回答 1

2

在 Scribe 中实现对其他 OAuth 2 提供程序的支持与 wiki 中描述的方式非常相似。

你基本上必须实现一个子类,DefaultApi20就像它为其他提供者所做的那样。您可以将Google 的实现用作蓝图,因为他们可能使用类似的 OAuth 2 草案作为 Quote。

请注意,我向您指出了Thomas Bruyelle 的 Scribe 分支,因为最初的 Scribe仍然缺少OAuth 2 规范的后续草案所需的一些功能,而 Quote 似乎也需要这些功能。

于 2012-11-06T18:53:44.810 回答