java – 通过Twitter登录OAuth不记得授权
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 通过Twitter登录OAuth不记得授权,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2371字,纯文字阅读大概需要4分钟。
内容图文
我正在编写一个Web应用程序,并且已经实现了用户可以使用spring-social-(core / twitter)通过Twitter登录.
然而,Twitter表现得很奇怪.在初始身份验证/授权之后,每次我将用户发送到Twitter进行身份验证时,Twitter都会提示再次授权我的应用程序.我查看了连接的Twitter个人资料.我的应用程序在那里并且正确授权(在我的情况下是读访问权限).
我没有请求其他权限的情况.我的所有应用程序需求都是读访问权限(授权对话框确认了这一点).
我正在使用OAuth1Operations(由TwitterConnectionFactory返回)来执行OAuth舞蹈并将结果连接保存在数据库中.我的前端是用Wicket 1.5编写的.
当我想通过Twitter登录时,我可以一次又一次地重新授权我的应用程序来解决这个问题,但这是一个很大的麻烦.谁知道我在这里缺少什么?
这是我的代码:
TwitterConnectionFactory connectionFactory = (TwitterConnectionFactory) connectionFactoryLocator.getConnectionFactory(Twitter.class);
String callbackUrl = [...];
if (pageParameters.get("oauth_token").isNull() || pageParameters.get("oauth_verifier").isNull()) {
MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
params.add("x_auth_access_type", "read");
OAuthToken token = connectionFactory.getOAuthOperations().fetchRequestToken(callbackUrl, params);
String url = connectionFactory.getOAuthOperations().buildAuthorizeUrl(token.getValue(), OAuth1Parameters.NONE);
getSession().setAttribute("twitter_token", token);
setResponsePage(new RedirectPage(url));
} else {
String token = pageParameters.get("oauth_token").toString();
String verifier = pageParameters.get("oauth_verifier").toString();
OAuthToken previousToken = (OAuthToken) getSession().getAttribute("twitter_token");
if (previousToken.getValue().equals(token)) {
AuthorizedRequestToken authorizedRequestToken = new AuthorizedRequestToken(previousToken, verifier);
OAuthToken accessToken = connectionFactory.getOAuthOperations().exchangeForAccessToken(authorizedRequestToken, null);
Connection<Twitter> connection = connectionFactory.createConnection(accessToken);
}
}
解决方法:
我找到了解决方案!这里也详细说明:Simple Twitter Oauth authorization asking for credentials every time
问题是我特意要求Twitter每次都授权我的应用程序.更换:
String url = connectionFactory.getOAuthOperations().buildAuthorizeUrl(token.getValue(), OAuth1Parameters.NONE);
同
String url = connectionFactory.getOAuthOperations().buildAuthenticateUrl(token.getValue(), OAuth1Parameters.NONE);
解决了这个问题!
调用URL进行身份验证只会在应用尚未获得授权的情况下请求授权.
内容总结
以上是互联网集市为您收集整理的java – 通过Twitter登录OAuth不记得授权全部内容,希望文章能够帮你解决java – 通过Twitter登录OAuth不记得授权所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。