[英]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庫的源代碼,發現了一些東西
在這里我們可以看到我可以使用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的
對於所有主要提供商, 抄寫員示例目錄
編輯
查看討論之后,我的建議是充分了解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.