QQ,新浪微博第三方登陆

http://connect.qq.com/   QQ应用开发

http://open.weibo.com   新浪微博应用开发

首先注册申请开发者应用

申请一个appkey和App Secret,这个是入口,必须获取到这两个才能进行接下来的接入工作

其次下载应用对应的Sdk,比如QQ,下载:Sdk4j.jar,新浪微博,下载weibo4j-oauth2-beta3.1.1.zip,并将解压后的src目录下的weibo4j拷贝到对应项目的src目录

页面部分

<a href="javascript:;" οnclick="sinaToLogin()" title="新浪微博登录"><img src="<%=path%>/resources/skins/ico/ico_42.gif" width="27" height="22"></a>&nbsp;&nbsp;
<a href="<%=path%>/qqlogin.htm" title="QQ登陆"><img src="<%=path%>/resources/skins/ico/ico_43.gif" width="20" height="23"></a>


        function sinaToLogin(){
            window.location.assign("https://api.weibo.com/oauth2/authorize?client_id=*********&response_type=code&redirect_uri=********/weibocellback.htm");
            }

Java后台部分

/**
     * 方法描述:首页QQ登陆
     */
    public void qqlogin() throws Exception {
        if (startTime == 0L) {
            startTime = new Date().getTime();
        }
        response.setContentType("text/html;charset=utf-8");
        response.sendRedirect(new Oauth().getAuthorizeURL(request));
    }

    /**
     * 方法描述:QQ回调
     */
    public String qqcellback() throws Exception {
        response.setContentType("text/html;charset=utf-8");

         if (accessTokenObj.getAccessToken().equals("")) {
                // 网站受到CSRF攻击或者用户取消了授权
                logger.info("网站受到CSRF攻击或者用户取消了授权,没有获取到响应参数");
                request.getSession().setAttribute("errormsg", "用户登陆失败");// 登陆页面提示信息
                tx.ice_getCommunicator().destroy();
                return "login1";// 返回登陆页面
            } else {
                // 获得用户授权
                accessToken = accessTokenObj.getAccessToken();
                tokenExpireIn = accessTokenObj.getExpireIn();
                // 利用获取到的accessToken 去获取当前用户的openid
                OpenID openIDObj = new OpenID(accessToken);
                openID = openIDObj.getUserOpenID();

                  UserInfo userInfo = new UserInfo(accessToken, openID);
                    UserInfoBean userInfoBean = userInfo.getUserInfo();
                    if (userInfoBean.getRet() == 0) {
                        logger.info("会员的名字"+userInfoBean.getNickname());
                        member.setName(userInfoBean.getNickname());// 封装会员信息:会员的名字
                        logger.info("会员的性别"+userInfoBean.getGender());
                        member.setSex(userInfoBean.getGender()=="女"?"0":"1");// 封装会员信息:会员的性别
                    } else {
                        logger.info("很抱歉,我们没能正确获取到您的信息,原因是: "+ userInfoBean.getMsg());
                    }

                  。。。。。。。。省略

             }

public void weibologin(){
        try {
            BareBonesBrowserLaunch.openURL(new Oauth().authorize("code", ""));
        } catch (WeiboException e) {
            e.printStackTrace();
            logger.info(e);
        }
    }

    public String weibocellback(){
                String code = request.getParameter("code");

                                        Oauth oauth = new Oauth();
                                            AccessToken token  = oauth.getAccessTokenByCode(code);
                                            String accString = token.toString();
                                            logger.info(accString);//日志
                                            String str[] = accString.split(","); //截取字符串,获得accessToken和uid
                                            String accessToken= str[0].split("=")[1];
                                            logger.info(accessToken);//日志
                                            String str1[] = str[3].split("]");
                                            String uid = str1[0].split("=")[1];
                                            logger.info(uid);//日志
                                            member.setWeibouid(uid);//用户ID
                                            Users um = new Users(accessToken);

                                             User user = um.showUserById(uid);
                                                            if(user!=null){
                                                                logger.info("会员的名字"+user.getScreenName());
                                                                member.setName(user.getScreenName());// 封装会员信息:会员的名字
                                                                logger.info("会员的性别"+user.getGender());
                                                                member.setSex(user.getGender()=="m"?"1":"0");// 封装会员信息:会员的性别
                                                            }else{
                                                                logger.info("很抱歉,我们没能正确获取到用户id="+uid+"的信息");
                                                            }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值