java 实现微博,QQ联合登录
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt313
开发平台
http://connect.qq.com/
http://open.weibo.com/
可以下载相应的sdk 和 API
Java代码
- 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
package
com.fanbaobao.action;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
javax.servlet.http.HttpSession;
import
com.fanbaobao.service.FbbUser;
import
com.fanbaobao.service.FbbService.Client;
import
com.fanbaobao.util.FbbUtil;
import
weibo4j.Oauth;
import
weibo4j.Users;
import
weibo4j.Weibo;
import
weibo4j.http.AccessToken;
import
weibo4j.model.User;
public
class
SinaAction
extends
BaseAction {
private
String errorMsg;
public
String toLogin()
throws
Exception{
try
{
HttpServletRequest request=getRequest();
Oauth oauth=
new
Oauth();
getResponse().sendRedirect(oauth.authorize(
"code"
));
//重定向到新浪授权页面
}
catch
(Exception e) {
e.printStackTrace();
}
return
null
;
}
/**
* 新浪微博登录的回调
* @return
* @throws Exception
*/
public
String doLogin()
throws
Exception{
HttpServletRequest request=getRequest();
HttpSession session=request.getSession();
String accesstoken =
null
;
String code=request.getParameter(
"code"
);
if
(code!=
null
)
{
Oauth oauth=
new
Oauth();
AccessToken accessToken=oauth.getAccessTokenByCode(code);
accesstoken=accessToken.getAccessToken();
if
(accessToken!=
null
)
{
Weibo weibo=
new
Weibo();
weibo.setToken(accessToken.getAccessToken());
Users users=
new
Users();
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);
return
SUCCESS;
}
}
else
{
errorMsg=
"新浪oauth 认证请求非法!"
;
return
LOGIN;
}
return
SUCCESS;
}
public
String getErrorMsg() {
return
errorMsg;
}
public
void
setErrorMsg(String errorMsg) {
this
.errorMsg = errorMsg;
}
}
Java代码
- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
package
com.fanbaobao.action;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
javax.servlet.http.HttpSession;
import
com.fanbaobao.service.FbbUser;
import
com.fanbaobao.service.FbbService.Client;
import
com.fanbaobao.util.FbbUtil;
import
com.qq.connect.QQConnectException;
import
com.qq.connect.api.OpenID;
import
com.qq.connect.api.qzone.PageFans;
import
com.qq.connect.api.qzone.UserInfo;
import
com.qq.connect.javabeans.AccessToken;
import
com.qq.connect.javabeans.qzone.PageFansBean;
import
com.qq.connect.javabeans.qzone.UserInfoBean;
import
com.qq.connect.oauth.Oauth;
public
class
QzoneAction
extends
BaseAction {
private
String errorMsg;
public
String toLogin()
throws
Exception{
this
.getResponse().setContentType(
"text/html;charset=utf-8"
);
try
{
this
.getResponse().sendRedirect(
new
Oauth().getAuthorizeURL(
this
.getRequest()));
}
catch
(QQConnectException e) {
e.printStackTrace();
}
return
null
;
}
public
String doLogin()
throws
Exception{
HttpServletResponse response=
this
.getResponse();
HttpServletRequest request=
this
.getRequest();
HttpSession session=request.getSession();
response.setContentType(
"text/html; charset=utf-8"
);
try
{
AccessToken accessTokenObj =
(
new
Oauth()).getAccessTokenByRequest(request);
String accessToken =
null
,
openID =
null
;
Long tokenExpireIn =
null
;
if
(accessTokenObj.getAccessToken().equals(
""
)) {
errorMsg=
"QQ登录校验失败!"
;
return
LOGIN;
}
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 =
new
OpenID(accessToken);
openID = openIDObj.getUserOpenID();
request.getSession().setAttribute(
"demo_openid"
, openID);
UserInfo qzoneUserInfo =
new
UserInfo(accessToken, openID);
UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
//
PageFans pageFansObj =
new
PageFans(accessToken, openID);
PageFansBean pageFansBean = pageFansObj.checkPageFans(
"97700000"
);
com.qq.connect.api.weibo.UserInfo weiboUserInfo =
new
com.qq.connect.api.weibo.UserInfo(accessToken, openID);
com.qq.connect.javabeans.weibo.UserInfoBean weiboUserInfoBean =
weiboUserInfo.getUserInfo();
// 第三方处理用户绑定逻辑
String user_id=openID;
String nickname=
new
String(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);
return
SUCCESS;
// 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();
return
LOGIN;
}
}
public
String getErrorMsg() {
return
errorMsg;
}
public
void
setErrorMsg(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互联登录设置的路径设置
随机推荐
- [硬件]_ELVE_VS2015下opencv3.3的配置问题
0x00 引言 最近想搞一下摄像头,但是我的Windows版本是64位的,opencv3.3貌似也只支持64位系统了,所以就配置一下win10+vs2015+opencv3.3的环境变量,具体下载和 ...
- CI 结合 vue.js 的搜索功能模块
CI 结合 vue.js 的搜索功能模块 最近在有优化公司后台的某个模块的搜索功能优化 原先的是这个样子的,很是单调: 老大给我找个图希望我能弄成这样子: 经过不断修改,最后成了这样子 是不是比以前好 ...
- [BZOJ 1054][HAOI 2008]移动玩具 状态压缩
考试的时候一看是河南省选题,觉得会很难,有点不敢想正解.感觉是个状压.但是一看是十年前的题,那怂什么! 直接把十六个数的状态压进去,因为个数是不变的,所以状态枚举的时候只要找数目一样的转移即可.而且只 ...
- python之路——面向对象
面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复 ...
- 关于div+css排版布局中需注意的细节问题
第一个注意点:选择器的使用(标签.class.id) 三种选择器中id(#)的优先级最高,根据id名筛选出唯一元素: 如下输入:#menu{ width:1200px; height:45px; ba ...
- .Net Webapi Swagger增加登录功能
.mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...
- 漫谈ELK在大数据运维中的应用
漫谈ELK在大数据运维中的应用 圈子里关于大数据.云计算相关文章和讨论是越来越多,愈演愈烈.行业内企业也争前恐后,群雄逐鹿.而在大数据时代的运维挑站问题也就日渐突出,任重而道远了.众所周知,大数据平台 ...
- MYSQL创建数据库时候直接指定编码和排序规则
安装我 在网上搜索的结果执行 代码: sudo gedit /etc/mysql/my.cnf 设置了默认编码为 UTF8 代码: [client]port = 3306sock ...
- 监听 window.open 打开的窗口关闭并回调
第三方的登录的解决方案通常有两种方式,一是打开一个新的标签页,然后登录回调回来: 二是通过父窗口打开一个子窗体去第三方登录,登陆成功时关掉子窗体回到父窗口. 问题来了 我的父窗体怎么样才知道子窗体被关 ...
- php之数组
数组分类: 1.索引数组. 索引值从0开始,依次递增. 2.使用array()函数声明数组 <?php // 1.直接为数组元素赋值即可声明数组 $contact_index[0] = 1; $ ...