1

我刚开始查看 scribe 以使用 twitter/facebook 等社交网络进行身份验证。我使用 twitter 的示例作为参考。但是,由于某种原因,我似乎没有从 twitter 获取 oauth_verifier(即使回调是通过服务构建器注册的——我在回调中使用 localhost,因为它与另一个社交 api 一起使用)。任何有用的建议都将受到欢迎。提前致谢。

OAuthService service = new ServiceBuilder()
.provider(TwitterApi.class)
.apiKey(consumerKey)
.apiSecret(consumerSecret)
.callback("http://localhost/oauth/twitter")
.build();

        //get the token
        Token requestToken = service.getRequestToken();

        String authUrl = service.getAuthorizationUrl(requestToken);
        Logger.info("authurl::" + authUrl); // not getting the oauth_verifier

来自 scribe 的调试输出我更改了令牌信息):

setting oauth_callback to http://localhost/oauth/twitter
generating signature...
base string is: POST&http%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252Flocalhost%252Foauth%252Ftwitter%26oauth_consumer_key%3DAAACCCV6ASDFGHJCgYBCD%26oauth_nonce%3D607134093%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1353965859%26oauth_version%3D1.0
signature is: +mSqKJIC1Q0pMEFs/gIJViF7kbg=
appended additional OAuth parameters: { oauth_callback -> http://localhost/oauth/twitter , oauth_signature -> +mSqKJIC1Q0pMEFs/gIJViF7kbg= , oauth_version -> 1.0 , oauth_nonce -> 607134093 , oauth_signature_method -> HMAC-SHA1 , oauth_consumer_key -> AAACCCV6ASDFGHJCgYBCD , oauth_timestamp -> 1353965859 }
using Http Header signature
sending request...
response status code: 200
response body: oauth_token=itJrpOP3KLeD7Ha6oy0IRr4HysFut5eAOpIlj8OmNE&oauth_token_secret=X8LmhAUpvIkfEd7t7P1lvwwobC3JJIhUabcEs0Rn5w&oauth_callback_confirmed=true
authurl::https://api.twitter.com/oauth/authorize?oauth_token=itJrpOP3KLeD7Ha6oy0IRr4HysFut5eAOpIlj8OmNE
obtaining access token from http://api.twitter.com/oauth/access_token
setting token to: Token[itJrpOP3KLeD7Ha6oy0IRr4HysFut5eAOpIlj8OmNE , X8LmhAUpvIkfEd7t7P1lvwwobC3JJIhUabcEs0Rn5w] and verifier to: org.scribe.model.Verifier@55ac8c3d
generating signature...

更新:我现在可以收到 oauth_verifier。完成测试后,我将更新此帖子。

4

1 回答 1

1

主要是飞行员错误。我能够使用 scribe 让 oauth 与 twitter 一起工作。在获得服务、来自服务的请求令牌和来自服务的 authenticationUrl 之后(在传递请求令牌时),我能够重定向到授权 URL。在那里,我能够使用我的 twitter ID 对自己进行身份验证,该 ID 将我重定向到创建服务时指定的回调 URL。身份验证后,我收到了 oauth_verifier,我可以使用它来创建验证器,然后使用验证器和请求令牌从服务接收访问令牌。然后发出并签名了 oauth 请求,这导致了 Twitter 的响应以及用户详细信息。工作。希望能帮助到你。

于 2012-11-27T23:42:17.883 回答