我正在使用抄写器制作具有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获取代码。

几乎所有主要的誓言都有大量的示例和非常好的文档
系统

这是给Facebook的

FacebookExample

对于所有主要供应商
Scribe Example Directory

编辑

查看讨论之后,我的建议是充分了解Oauth1和Oauth2。

10-07 15:43