簡體   English   中英

Scribe的Oauth問題

[英]Oauth problems with Scribe

我正在使用抄寫器制作具有oauth支持的應用程序。 我沒有發現Twitter出現問題,但是使用Facebook時遇到了問題...

這是適用於twitter oauth的代碼

OAuthService s = /* ... Facebook oauth init ... */
final Token requestToken = s.getRequestToken();
final String authURL = s.getAuthorizationUrl(requestToken);

它在第二行給我一個錯誤:

12-20 10:01:31.475: E/AndroidRuntime(5405): java.lang.UnsupportedOperationException: Unsupported operation, please use 'getAuthorizationUrl' and redirect your users there
12-20 10:01:31.475: E/AndroidRuntime(5405):     at org.scribe.oauth.OAuth20ServiceImpl.getRequestToken(OAuth20ServiceImpl.java:45)

我知道它說我可能會使用getAuthorizationUrl ...但是我必須傳遞一個requestToken ...

請你幫助我好嗎?

Scribe和Facebook的任何示例都將有所幫助

謝謝!

PS:Windows Live同樣存在問題! =(

編輯:

我一直在看Scribe庫的源代碼,發現了一些東西

https://github.com/fernandezpablo85/scribe-java/blob/master/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java

在這里我們可以看到我可以使用null參數調用getAuthorizationUrl(...),因為它不使用它。...但是我認為現在的主要問題是未填充配置...

這是我初始化facebook服務的方式:

new ServiceBuilder()
    .provider(FacebookApi.class)
    .apiKey(....)
    .apiSecret(....)
    .scope("email,offline_access")
    .callback("oauth://facebook")
    .build();

這個對嗎?

謝謝!

private static final Token EMPTY_TOKEN = null;

OAuthService service = new ServiceBuilder()
                           .provider(FacebookApi.class)
                            .apiKey(apiKey)
                            .apiSecret(apiSecret)
                             .callback("http://www.example.com/oauth_callback/")
                              .build();
 String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);

現在,您只需要將用戶重定向到此URL,並讓他自己驗證自己才能從facebok獲取代碼。

幾乎所有主要的Oath系統都有大量的示例和非常好的文檔

這是給Facebook的

Facebook示例

對於所有主要提供商, 抄寫員示例目錄

編輯

查看討論之后,我的建議是充分了解Oauth1和Oauth2。

你錯了。 OAuth 2協議永遠不會像OAuth 1一樣返回請求令牌。

Oauth 1發出HTTP POST請求並返回未授權的請求令牌。 然后,您將必須授權您的未授權令牌來接收授權令牌(即2 HTTP調用)。

另一方面,Oauth 2沒有請求令牌流,您將需要對授權令牌進行HTTP GET操作(僅1個HTTP調用)。 因此,為什么Scribe說您需要調用getAuthorizedUrl

請參閱此Facebook示例 ,以了解如何使用OAuth 2檢索授權令牌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM