2

サービスhttp://quote.fmのために、自分用に (学習目的で) 小さなアプリを作成したいと考えています。これらは、要求トークンと承認 URL を備えた oAuth 2.0 Api を提供します。

この API で scribe を使用するにはどうすればよいですか? スクライブ ウィキでこのサイトを見つけましたが、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();
}
4

1 に答える 1

2

Scribeでの追加のOAuth2プロバイダーのサポートの実装は、wikiで説明されている方法と非常によく似ています。

基本的に、他のプロバイダーDefaultApi20で行われているようなサブクラスを実装する必要があります。Googleの実装は、Quoteと同様のOAuth 2ドラフトを使用している可能性があるため、青写真として使用できます。

元のScribeにはまだOAuth2仕様のドラフトで必要な機能がいくつか欠けており、Quoteでもこれらが必要なようであるため、ThomasBruyelleのScribeのフォークを指摘しました。

于 2012-11-06T18:53:44.810 に答える