我正在使用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库的源代码,我发现了一些东西
在这里我们可以看到我可以调用getAuthorizationUrl(...)使用null参数,因为它不使用它...但我认为现在的首要问题是配置没有填满...
下面是我初始化facebook服务的方法:
new ServiceBuilder()
.provider(FacebookApi.class)
.apiKey(....)
.apiSecret(....)
.scope("email,offline_access")
.callback("oauth://facebook")
.build();这是正确的吗?
谢谢!
发布于 2011-12-20 17:46:18
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的
适用于所有主要提供商Scribe Example Directory
编辑
看完讨论后,我的建议是对Oauth1和Oauth2有一个全面的了解。
发布于 2011-12-20 17:46:41
你全搞错了。OAuth 2协议永远不会像OAuth 1那样返回请求令牌。
Oauth 1执行HTTP POST请求并返回未经授权的请求令牌。然后,您必须授权您的未授权令牌才能接收授权令牌(即2HTTP调用)。
另一方面,Oauth 2没有请求令牌流,您需要为授权令牌执行HTTP GET (仅限1个HTTP调用)。这就是为什么Scribe说你需要调用getAuthorizedUrl。
请参阅此Facebook Example,了解如何使用OAuth 2检索授权令牌。
https://stackoverflow.com/questions/8573272
复制相似问题