예제 #1
0
  public void doLoginRedirect(
      @Param("code") String code,
      @Param("state") String state,
      Navigator nav,
      TurbineRunData rundata,
      Context context) {
    try {
      AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
      String accessToken = accessTokenObj.getAccessToken();
      long tokenExpireIn = accessTokenObj.getExpireIn();

      OpenID openIDObj = new OpenID(accessToken);
      String openID = openIDObj.getUserOpenID();

      UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
      UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();

      UserDO userDO = new UserDO();
      userDO.setNickName(userInfoBean.getNickname());
      userDO.setFaceImageUrl(userInfoBean.getAvatar().getAvatarURL100());
      userDO.setSourceType(SnsSourceType.TENXUN_QQ.getType());
      userDO.setAccessToken(accessToken);
      userDO.setSourceId(openID);
      userDO.setStatus(MainStatus.NORMAL.getType());
      userDO.setPermissions(PermissionsType.NORMAL.getType());

      userAO.save(userDO);

      setCurrentLoginUser(userDO);
    } catch (QQConnectException e) {
      e.printStackTrace(); // To change body of catch statement use File | Settings | File
      // Templates.
    }
  }
 /**
  * 获取第三方用户信息
  *
  * @param siteMark
  * @param openId
  * @param accessToken
  * @return
  */
 public static BindSite getBindSite(SiteMark siteMark, String openId, String accessToken) {
   BindSite bs = new BindSite();
   bs.setSiteMark(siteMark);
   bs.setOpenId(openId);
   bs.setAccessToken(accessToken);
   String nickName = null;
   if (SiteMark.QQ.equals(siteMark)) {
     UserInfo ui = new UserInfo(accessToken, openId);
     UserInfoBean uib = null;
     try {
       uib = ui.getUserInfo();
     } catch (QQConnectException e) {
       logger.error(e);
       throw new ServiceException(ErrService.UserS.ACC_108, "QQ_API调用异常", "第三方平台异常,请从新尝试!");
     }
     nickName = uib.getNickname();
   } else if (SiteMark.SINA.equals(siteMark)) {
     Users um = new Users();
     um.client.setToken(accessToken);
     try {
       weibo4j.model.User user = um.showUserById(openId);
       nickName = user.getScreenName();
     } catch (WeiboException e) {
       logger.error(e);
       throw new ServiceException(ErrService.UserS.ACC_108, "SINA_API调用异常", "第三方平台异常,请从新尝试!");
     }
   }
   bs.setNickName(nickName);
   return bs;
 }
예제 #3
0
 /**
  * qq登录回调方法
  *
  * @throws QQConnectException
  */
 public void qqlogincallback() throws QQConnectException, IOException {
   HttpServletRequest request = getRequest();
   AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
   String accessToken = null, openID = null;
   if (accessTokenObj.getAccessToken().equals("")) {
     renderText("用户取消了授权或没有获取到响应参数");
   } else {
     accessToken = accessTokenObj.getAccessToken();
     // 利用获取到的accessToken 去获取当前用的openid -------- start
     OpenID openIDObj = new OpenID(accessToken);
     openID = openIDObj.getUserOpenID();
     UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
     UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
     String avatar = userInfoBean.getAvatar().getAvatarURL50();
     String nickname = userInfoBean.getNickname();
     User user = (User) getSession().getAttribute(Constants.USER_SESSION);
     if (user == null) {
       user = User.me.findByOpenID(openID, "qq");
       String id = StrUtil.getUUID();
       if (user == null) {
         user = new User();
         user.set("id", id)
             .set("qq_nickname", nickname)
             .set("qq_avatar", avatar)
             .set("qq_open_id", openID);
       } else {
         user.set("qq_nickname", nickname).set("qq_avatar", avatar);
       }
       setSessionAttr("open_id", openID);
       setSessionAttr("thirdlogin_type", "qq");
       setSessionAttr("unsave_user", user);
     } else {
       User user1 = User.me.findByOpenID(openID, "qq");
       if (user1 != null && !user1.get("id").equals(user.get("id"))) {
         getResponse().setCharacterEncoding("utf-8");
         getResponse()
             .getWriter()
             .write(
                 "<script>alert('此QQ号已经绑定其他账户,请更换绑定');location.href=\'/user/setting\'</script>");
         return;
       } else {
         user.set("qq_nickname", nickname)
             .set("qq_open_id", openID)
             .set("qq_avatar", avatar)
             .update();
       }
     }
     if (StrUtil.isBlank(user.getStr("email"))) {
       redirect("/reg.html?third=qq");
     } else {
       setSessionAttr(Constants.USER_SESSION, user);
       setCookie(
           Constants.USER_COOKIE,
           StrUtil.getEncryptionToken(user.getStr("token")),
           30 * 24 * 60 * 60);
       String source = (String) getSession().getAttribute("source");
       if (!StrUtil.isBlank(source)) {
         if (source.equalsIgnoreCase("usersetting")) {
           getSession().removeAttribute("source");
           redirect("/user/setting");
         }
       } else {
         redirect("/");
       }
     }
   }
 }