2012-11-06 63 views
2

我想爲自己構建一個小應用程序(學習目的)爲服務http://quote.fm。他們提供一個oAuth 2.0 Api與一個請求令牌和一個授權URL。如何將Scribe與尚未實現的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

您可以添加異常的堆棧跟蹤嗎? –

+1

我解決它通過查看:https://github.com/bistri/scribe-java/blob/master/src/test/java/org/scribe/examples/GoogleExample20.java getRequestToken調用實際上已過時。 謝謝! – chrjs

回答

2

在抄寫額外的OAuth 2個提供商實現的支持是非常類似於在維基描述的方式。

你基本上必須實現DefaultApi20的子類,就像它爲other providers所做的那樣。您可以使用implementation for Google作爲藍圖,因爲它們可能使用與報價類似的OAuth 2草稿。

請注意,我指出Thomas Bruyelle's fork of Scribe作爲original Scribe仍然lacks some features OAuth 2規範的後續草稿所要求的,Quote也似乎需要這些。

+0

謝謝,我現在看得更清楚了。我用我的源代碼更新了第一篇文章,其中包含以下錯誤: java.lang.UnsupportedOperationException:不支持的操作,請使用'getAuthorizationUrl'並將用戶重定向到那裏 我也想按照建議的方式使用抄寫叉,但我無法構建這個版本的jar。我不認爲我需要缺少的功能。使用的oAuth api非常簡單。 – chrjs

相關問題