java 实现微博,QQ联合登录
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt313
开发平台
http://connect.qq.com/
http://open.weibo.com/
可以下载相应的sdk 和 API
Java代码
- 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
packagecom.fanbaobao.action;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importcom.fanbaobao.service.FbbUser;importcom.fanbaobao.service.FbbService.Client;importcom.fanbaobao.util.FbbUtil;importweibo4j.Oauth;importweibo4j.Users;importweibo4j.Weibo;importweibo4j.http.AccessToken;importweibo4j.model.User;publicclassSinaActionextendsBaseAction {privateString errorMsg;publicString toLogin()throwsException{try{HttpServletRequest request=getRequest();Oauth oauth=newOauth();getResponse().sendRedirect(oauth.authorize("code"));//重定向到新浪授权页面}catch(Exception e) {e.printStackTrace();}returnnull;}/*** 新浪微博登录的回调* @return* @throws Exception*/publicString doLogin()throwsException{HttpServletRequest request=getRequest();HttpSession session=request.getSession();String accesstoken =null;String code=request.getParameter("code");if(code!=null){Oauth oauth=newOauth();AccessToken accessToken=oauth.getAccessTokenByCode(code);accesstoken=accessToken.getAccessToken();if(accessToken!=null){Weibo weibo=newWeibo();weibo.setToken(accessToken.getAccessToken());Users users=newUsers();User weiboUser=users.showUserById(accessToken.getUid());HttpServletResponse response=getResponse();System.out.println(weiboUser.getId());System.out.println(weiboUser.getGender());System.out.println(weiboUser.getName());System.out.println(accesstoken);// if(first<2){// if(first==1){ //用户第一次登录,发一条微博,且follow 51bi// Timeline timeline=new Timeline();// timeline.UpdateStatus("我注册成为了#比购网#会员,免费注册后去淘宝购物,最高有35%的现金返还。最给力的是:到拉手、京东商城、1号店等400多家知名商城不仅能享受最低价格,还能额外省钱40%。喜欢网购的童鞋都去注册一个省钱吧!官方网址:http://www.51bi.com/space/biuser/register.jsp?currentUrl=http://www.51bi.com/taobao/");// try {// Friendships fm = new Friendships();// fm.createFriendshipsById("1718952754");//follow 51bi// fm.createFriendshipsById("2908640880");//follow 51bi// } catch (Exception e) {// }// }//未完善资料Client client = FbbUtil.getClient();FbbUser fbbUser= client.doOauth(1, weiboUser.getId());session.setAttribute("fbbUserInfo", fbbUser);returnSUCCESS;}}else{errorMsg="新浪oauth 认证请求非法!";returnLOGIN;}returnSUCCESS;}publicString getErrorMsg() {returnerrorMsg;}publicvoidsetErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}}
Java代码
- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
packagecom.fanbaobao.action;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importcom.fanbaobao.service.FbbUser;importcom.fanbaobao.service.FbbService.Client;importcom.fanbaobao.util.FbbUtil;importcom.qq.connect.QQConnectException;importcom.qq.connect.api.OpenID;importcom.qq.connect.api.qzone.PageFans;importcom.qq.connect.api.qzone.UserInfo;importcom.qq.connect.javabeans.AccessToken;importcom.qq.connect.javabeans.qzone.PageFansBean;importcom.qq.connect.javabeans.qzone.UserInfoBean;importcom.qq.connect.oauth.Oauth;publicclassQzoneActionextendsBaseAction {privateString errorMsg;publicString toLogin()throwsException{this.getResponse().setContentType("text/html;charset=utf-8");try{this.getResponse().sendRedirect(newOauth().getAuthorizeURL(this.getRequest()));}catch(QQConnectException e) {e.printStackTrace();}returnnull;}publicString doLogin()throwsException{HttpServletResponse response=this.getResponse();HttpServletRequest request=this.getRequest();HttpSession session=request.getSession();response.setContentType("text/html; charset=utf-8");try{AccessToken accessTokenObj =(newOauth()).getAccessTokenByRequest(request);String accessToken =null,openID =null;Long tokenExpireIn =null;if(accessTokenObj.getAccessToken().equals("")) {errorMsg="QQ登录校验失败!";returnLOGIN;}else{accessToken = accessTokenObj.getAccessToken();tokenExpireIn = accessTokenObj.getExpireIn();request.getSession().setAttribute("demo_access_token", accessToken);request.getSession().setAttribute("demo_token_expirein", String.valueOf(tokenExpireIn));OpenID openIDObj =newOpenID(accessToken);openID = openIDObj.getUserOpenID();request.getSession().setAttribute("demo_openid", openID);UserInfo qzoneUserInfo =newUserInfo(accessToken, openID);UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();//PageFans pageFansObj =newPageFans(accessToken, openID);PageFansBean pageFansBean = pageFansObj.checkPageFans("97700000");com.qq.connect.api.weibo.UserInfo weiboUserInfo =newcom.qq.connect.api.weibo.UserInfo(accessToken, openID);com.qq.connect.javabeans.weibo.UserInfoBean weiboUserInfoBean =weiboUserInfo.getUserInfo();// 第三方处理用户绑定逻辑String user_id=openID;String nickname=newString(userInfoBean.getNickname());System.out.println(user_id);System.out.println(nickname);Client client = FbbUtil.getClient();FbbUser fbbUser= client.doOauth(2, user_id);session.setAttribute("fbbUserInfo", fbbUser);returnSUCCESS;// session.setAttribute("oauth_token", oauth_token);// session.setAttribute("oauth_token_secret", oauth_token_secret);// InterUser interUser=new InterUser(Constants.LOGIN_FROM_QQ,user_id,null,nickname);// interUser.setBiUserService(biUserService);// interUser.setRuledao(ruledao);// interUser.setAccesstoken(accessToken);// if (tokenExpireIn!=null) {// interUser.setExpireIn(String.valueOf(tokenExpireIn));// }// session.setAttribute("uid", user_id);// session.setAttribute("fromsite", Constants.LOGIN_FROM_QQ);// int first=interUser.doUserLogin(request,response,false); //接口登录// if(first<2){// session.setAttribute("loginname",nickname);// if (first==-1) {// session.setAttribute("msg","save userBind error");// }else if (first==-2) {// session.setAttribute("msg","error");// }// return "qzone";// }}}catch(QQConnectException e) {e.printStackTrace();returnLOGIN;}}publicString getErrorMsg() {returnerrorMsg;}publicvoidsetErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}}
Java代码
//login.properties
############
#t.sina login
###########
client_ID =xx
client_SERCRET =xx
redirect_URI =xxx
baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
############
#taoBao login
###########
#TAOBAO_KEY=xxxx
#TAOBAO_SECRET=xxxxxx
#TAOBAO_REDIRECT=xxxx
#authorizeURL=https://oauth.taobao.com/authorize
#accessTokenURL=https://oauth.taobao.com/token
//qqconnectconfig.properties
app_ID = x
app_KEY = xx
redirect_URI = xxx
scope = get_user_info,add_topic,add_one_blog,add_album,upload_pic,list_album,add_share,check_page_fans,add_t,
add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idollist,add_idol,del_ido,
get_tenpay_addr
baseURL = https://graph.qq.com/
getUserInfoURL = https://graph.qq.com/user/get_user_info
accessTokenURL = https://graph.qq.com/oauth2.0/token
authorizeURL = https://graph.qq.com/oauth2.0/authorize
getOpenIDURL = https://graph.qq.com/oauth2.0/me
addTopicURL = https://graph.qq.com/shuoshuo/add_topic
addBlogURL = https://graph.qq.com/blog/add_one_blog
addAlbumURL = https://graph.qq.com/photo/add_album
uploadPicURL = https://graph.qq.com/photo/upload_pic
listAlbumURL = https://graph.qq.com/photo/list_album
addShareURL = https://graph.qq.com/share/add_share
checkPageFansURL = https://graph.qq.com/user/check_page_fans
addTURL = https://graph.qq.com/t/add_t
addPicTURL = https://graph.qq.com/t/add_pic_t
delTURL = https://graph.qq.com/t/del_t
getWeiboUserInfoURL = https://graph.qq.com/user/get_info
getWeiboOtherUserInfoURL = https://graph.qq.com/user/get_other_info
getFansListURL = https://graph.qq.com/relation/get_fanslist
getIdolsListURL = https://graph.qq.com/relation/get_idollist
addIdolURL = https://graph.qq.com/relation/add_idol
delIdolURL = https://graph.qq.com/relation/del_idol
getTenpayAddrURL = https://graph.qq.com/cft_info/get_tenpay_addr
getRepostListURL = https://graph.qq.com/t/get_repost_list
version = 2.0.0.0
java 实现微博,QQ联合登录的更多相关文章
- QQ联合登录(基于Oauth2.0协议)
1. 获取授权码Authorization Code https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id= ...
- 如何从零开始对接第三方登录(Java版):QQ登录和微博登录
前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...
- 【Demo】QQ,github,微博第三方社交登录
本文主要讲解 集成 第三方社交账号登录 为什么会有这个需求? 主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足 ...
- 关于使用QQ、新浪微博、腾讯微博等第三方登录网站的开发过程(二)
(二).新浪微博登录 1. 首先在新浪微博开放平台注册成为开发者.[http://open.weibo.com/connect] 具体自己填写一些相关信息就OK! 2. 注册成功之后,点击[微连接], ...
- 微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)
一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模拟微博账号登录的方式实现的,这种方式如果真的运营起来,实际上是一件非常头疼痛苦的事,你可能每天都过得提心吊胆,生怕新浪爸爸把你的那些账 ...
- QQ第三方登录
QQ第三方登录 在Android应用程序的开发过程中,很多时候需要加入用户登录/注册模块.除了自己动手设计登录界面并实现相应功能外,现在还可以借助百度.腾讯等开发者平台提供的第三方账号登录模块.最近研 ...
- 联合登录 & OAuth 2.0 & OpenID
联合登录 & OAuth 2.0 & OpenID 第三方联合登录一般可以降低网站的获客成本,所以一般的网站都会做一些联合登录,常用的就是QQ.微信.微博; https://www.z ...
- PHP实现QQ第三方登录
PHP实现QQ第三方登录 学习之前,请大家先看一下oAuth协议. 首先呢,我们进入QQ互联的官方网站 http://connect.qq.com登入我们自己的QQ号,没有QQ号的小伙伴可以忽略本篇博 ...
- QQ互联登录回调路径错误redirect uri is illegal(100010)
QQ互联登录设置的路径设置
随机推荐
- POJ2236 Wireless Network 并查集简单应用
Description An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have ...
- node中使用es6/7/8 --- 支持性与性能
前言 这几年react.vue的快速发展,越来越多的前端开始讲es6的代码运用在项目中,因为我们可以通过babel进行转译为低版本的js以便于运行在所有浏览器中,import.export.let.箭 ...
- js存款计算器原生小demo
大家好,本人是初入前端的一枚程序猿,深知js底层开发的重要性,这也是我的软肋所在(曾经以为),渐渐的明白了一个道理,饭要一口口吃,路要一步步走,这也是我想告诉给所有刚刚进入IT行业的技术员们,沉下心, ...
- 初学IOS之TableView
PS:tableview作为IOS的UI界面的重点,今天我只学习一部分,在下文列出. 下文我以创建省份为例子,用纯代码的方式创建,但是并不是最优代码,仅作熟悉tableview的创建使用. ----- ...
- hibernate中对象的3种状态----瞬时态、持久态、脱管态
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...
- 王佩丰第2讲-excel单元格格式设置 笔记
点小箭头都可以进入单元格格式设置 跨越合并 添加斜线 回车 ALT+ENTER 格式刷 数字格式 特定红色 货币VS会计专用 日期 2是1月2号,3是1月3号-- 自定义[例子中是在数值后面加&quo ...
- Oracle外键需要建索引吗?
关于Oracle中的外键,首先要说明一下. 1. 除非已定义了父表主键或唯一键约束,否则oracle将不允许创建子表的外键约束. 2. 在定义外键约束时,oracle不会自动创建索引,所以必须手动在与 ...
- 解读java同步类CountDownLatch
同步辅助类: CountDownLatch是一个同步辅助类,在jdk5中引入,它允许一个或多个线程等待其他线程操作完成之后才执行. 实现原理 : CountDownLatch是通过计数器的方式来实现, ...
- NSURLConnection从入门到放弃
尽管NSURLConnection已经不建议使用了,iOS 7取而代之的是NSURLSession,但是本文依然打算剖析一下,其中一些思想还是值得学习一下,如果您不用NSURLConnection,并 ...
- statement和preparedstatement的区别
在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象.无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和 ...