详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt313

开发平台 
http://connect.qq.com/  
http://open.weibo.com/ 
可以下载相应的sdk 和 API

Java代码

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    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代码

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    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代码

    1. //login.properties

    2. ############

    3. #t.sina login

    4. ###########

    5. client_ID =xx

    6. client_SERCRET =xx

    7. redirect_URI =xxx

    8. baseURL=https://api.weibo.com/2/

    9. accessTokenURL=https://api.weibo.com/oauth2/access_token

    10. authorizeURL=https://api.weibo.com/oauth2/authorize

    11. ############

    12. #taoBao login

    13. ###########

    14. #TAOBAO_KEY=xxxx

    15. #TAOBAO_SECRET=xxxxxx

    16. #TAOBAO_REDIRECT=xxxx

    17. #authorizeURL=https://oauth.taobao.com/authorize

    18. #accessTokenURL=https://oauth.taobao.com/token

    19. //qqconnectconfig.properties

    20. app_ID = x

    21. app_KEY = xx

    22. redirect_URI = xxx

    23. scope = get_user_info,add_topic,add_one_blog,add_album,upload_pic,list_album,add_share,check_page_fans,add_t,

    24. add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idollist,add_idol,del_ido,

    25. get_tenpay_addr

    26. baseURL = https://graph.qq.com/

    27. getUserInfoURL = https://graph.qq.com/user/get_user_info

    28. accessTokenURL = https://graph.qq.com/oauth2.0/token

    29. authorizeURL = https://graph.qq.com/oauth2.0/authorize

    30. getOpenIDURL = https://graph.qq.com/oauth2.0/me

    31. addTopicURL = https://graph.qq.com/shuoshuo/add_topic

    32. addBlogURL = https://graph.qq.com/blog/add_one_blog

    33. addAlbumURL = https://graph.qq.com/photo/add_album

    34. uploadPicURL = https://graph.qq.com/photo/upload_pic

    35. listAlbumURL = https://graph.qq.com/photo/list_album

    36. addShareURL = https://graph.qq.com/share/add_share

    37. checkPageFansURL = https://graph.qq.com/user/check_page_fans

    38. addTURL = https://graph.qq.com/t/add_t

    39. addPicTURL = https://graph.qq.com/t/add_pic_t

    40. delTURL = https://graph.qq.com/t/del_t

    41. getWeiboUserInfoURL = https://graph.qq.com/user/get_info

    42. getWeiboOtherUserInfoURL = https://graph.qq.com/user/get_other_info

    43. getFansListURL = https://graph.qq.com/relation/get_fanslist

    44. getIdolsListURL = https://graph.qq.com/relation/get_idollist

    45. addIdolURL = https://graph.qq.com/relation/add_idol

    46. delIdolURL = https://graph.qq.com/relation/del_idol

    47. getTenpayAddrURL = https://graph.qq.com/cft_info/get_tenpay_addr

    48. getRepostListURL = https://graph.qq.com/t/get_repost_list

    49. version = 2.0.0.0

java 实现微博,QQ联合登录的更多相关文章

  1. QQ联合登录(基于Oauth2.0协议)

    1. 获取授权码Authorization Code https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id= ...

  2. 如何从零开始对接第三方登录(Java版):QQ登录和微博登录

    前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...

  3. 【Demo】QQ,github,微博第三方社交登录

    本文主要讲解 集成 第三方社交账号登录 为什么会有这个需求? 主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足 ...

  4. 关于使用QQ、新浪微博、腾讯微博等第三方登录网站的开发过程(二)

    (二).新浪微博登录 1. 首先在新浪微博开放平台注册成为开发者.[http://open.weibo.com/connect] 具体自己填写一些相关信息就OK! 2. 注册成功之后,点击[微连接], ...

  5. 微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)

    一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模拟微博账号登录的方式实现的,这种方式如果真的运营起来,实际上是一件非常头疼痛苦的事,你可能每天都过得提心吊胆,生怕新浪爸爸把你的那些账 ...

  6. QQ第三方登录

    QQ第三方登录 在Android应用程序的开发过程中,很多时候需要加入用户登录/注册模块.除了自己动手设计登录界面并实现相应功能外,现在还可以借助百度.腾讯等开发者平台提供的第三方账号登录模块.最近研 ...

  7. 联合登录 & OAuth 2.0 & OpenID

    联合登录 & OAuth 2.0 & OpenID 第三方联合登录一般可以降低网站的获客成本,所以一般的网站都会做一些联合登录,常用的就是QQ.微信.微博; https://www.z ...

  8. PHP实现QQ第三方登录

    PHP实现QQ第三方登录 学习之前,请大家先看一下oAuth协议. 首先呢,我们进入QQ互联的官方网站 http://connect.qq.com登入我们自己的QQ号,没有QQ号的小伙伴可以忽略本篇博 ...

  9. QQ互联登录回调路径错误redirect uri is illegal(100010)

    QQ互联登录设置的路径设置

随机推荐

  1. POJ2236 Wireless Network 并查集简单应用

    Description An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have ...

  2. node中使用es6/7/8 --- 支持性与性能

    前言 这几年react.vue的快速发展,越来越多的前端开始讲es6的代码运用在项目中,因为我们可以通过babel进行转译为低版本的js以便于运行在所有浏览器中,import.export.let.箭 ...

  3. js存款计算器原生小demo

    大家好,本人是初入前端的一枚程序猿,深知js底层开发的重要性,这也是我的软肋所在(曾经以为),渐渐的明白了一个道理,饭要一口口吃,路要一步步走,这也是我想告诉给所有刚刚进入IT行业的技术员们,沉下心, ...

  4. 初学IOS之TableView

    PS:tableview作为IOS的UI界面的重点,今天我只学习一部分,在下文列出. 下文我以创建省份为例子,用纯代码的方式创建,但是并不是最优代码,仅作熟悉tableview的创建使用. ----- ...

  5. hibernate中对象的3种状态----瞬时态、持久态、脱管态

    Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...

  6. 王佩丰第2讲-excel单元格格式设置 笔记

    点小箭头都可以进入单元格格式设置 跨越合并 添加斜线 回车 ALT+ENTER 格式刷 数字格式 特定红色 货币VS会计专用 日期 2是1月2号,3是1月3号-- 自定义[例子中是在数值后面加&quo ...

  7. Oracle外键需要建索引吗?

    关于Oracle中的外键,首先要说明一下. 1. 除非已定义了父表主键或唯一键约束,否则oracle将不允许创建子表的外键约束. 2. 在定义外键约束时,oracle不会自动创建索引,所以必须手动在与 ...

  8. 解读java同步类CountDownLatch

    同步辅助类: CountDownLatch是一个同步辅助类,在jdk5中引入,它允许一个或多个线程等待其他线程操作完成之后才执行. 实现原理 : CountDownLatch是通过计数器的方式来实现, ...

  9. NSURLConnection从入门到放弃

    尽管NSURLConnection已经不建议使用了,iOS 7取而代之的是NSURLSession,但是本文依然打算剖析一下,其中一些思想还是值得学习一下,如果您不用NSURLConnection,并 ...

  10. statement和preparedstatement的区别

    在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象.无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和 ...