您的位置:首页 > 其它

QQ,新浪微博第三方登陆

2015-05-29 11:41 162 查看
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:;" onclick="sinaToLogin()" title="新浪微博登录"><img src="<%=path%>/resources/skins/ico/ico_42.gif" width="27" height="22"></a>  

<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+"的信息");

                                                            }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: