首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scribe的Oauth问题

Scribe的Oauth问题
EN

Stack Overflow用户
提问于 2011-12-20 17:28:47
回答 2查看 9.6K关注 0票数 1

我正在使用scribe制作一个支持oauth的应用程序。我没有发现Twitter的问题,但当我使用facebook时,我遇到了问题...

这是在twitter oauth上工作的代码

代码语言:javascript
复制
OAuthService s = /* ... Facebook oauth init ... */
final Token requestToken = s.getRequestToken();
final String authURL = s.getAuthorizationUrl(requestToken);

它在第二行显示了一个错误:

代码语言:javascript
复制
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

在这里我们可以看到我可以调用getAuthorizationUrl(...)使用null参数,因为它不使用它...但我认为现在的首要问题是配置没有填满...

下面是我初始化facebook服务的方法:

代码语言:javascript
复制
new ServiceBuilder()
    .provider(FacebookApi.class)
    .apiKey(....)
    .apiSecret(....)
    .scope("email,offline_access")
    .callback("oauth://facebook")
    .build();

这是正确的吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-20 17:46:18

代码语言:javascript
复制
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的

FacebookExample

适用于所有主要提供商Scribe Example Directory

编辑

看完讨论后,我的建议是对Oauth1和Oauth2有一个全面的了解。

票数 7
EN

Stack Overflow用户

发布于 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检索授权令牌。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8573272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档