Package com.qq.open.qzone.user

Source Code of com.qq.open.qzone.user.QqGetUserInfo

package com.qq.open.qzone.user;

import java.io.IOException;

import org.apache.log4j.Logger;

import com.qq.open.common.OpenQqConstants;
import com.qq.open.common.OpenQqUtils;
import com.qq.open.common.json.JSONException;
import com.qq.open.common.json.JSONObject;
import com.qq.open.qzone.bean.param.QqGetUserInfoParamBean;
import com.qq.open.qzone.bean.result.QqGetUserInfoResultBean;

/**
* 获取用户信息
*
* @author HaoLiang
* @version 0.1.1
*/
public class QqGetUserInfo {
 
  /** 日志 */
  private Logger log = Logger.getLogger(QqGetUserInfo.class);
 
  /** 工具类 */
  private OpenQqUtils oqu = new OpenQqUtils();

  /**
   * 获取用户信息
   *   返回数据都包含在Map里,具体如何取值参照官方文档。
   *   map.get(参数名) 就能获取到对应的值
   *   例如:
   *      获取登陆用户的性别。
   *      Map.get("gender");
   *  
   *
   * @return 用户信息
   * @throws IOException
   */
  public QqGetUserInfoResultBean getUserInfo(QqGetUserInfoParamBean paramBean) throws IOException {
   
    // QQ互联工具类
    OpenQqUtils oqu = new OpenQqUtils();
   
    // 获取接口返回的数据
    String interfaceData = oqu.doGet(this.getUserInfoUrl(paramBean));
   
    return this.jsonToBean(interfaceData);
  }
 
 
  /**
   * 动态拼接获取用户数据的url
   *
   * @return 获取用户数据的url
   */
  private String getUserInfoUrl(QqGetUserInfoParamBean paramBean) {
   
    // 动态拼接获取用户数据的url
    StringBuilder userInfoUrl = new StringBuilder();
   
    // 获取用户数据接口的URl
    userInfoUrl.append(OpenQqConstants.QQ_USER_INFO_URL);
   
    // 应用的appid
    userInfoUrl.append("?oauth_consumer_key=" + oqu.getConfigValue("qq.appid"));
   
    // 应用的accessToken
    userInfoUrl.append("&access_token=" + paramBean.getAccessToken());
   
    // 应用的OpenID
    userInfoUrl.append("&openid=" + paramBean.getOpenId());
   
    return userInfoUrl.toString();
  }

 
  /**
   * 把接口返回的json数据转换成JavaBean
   *
   * @param jsonData 接口返回的数据
   * @return JavaBean数据
   * @throws JSONException
   */
  private QqGetUserInfoResultBean jsonToBean(String jsonData) {
    QqGetUserInfoResultBean resultBean = new QqGetUserInfoResultBean();
   
    // 接口返回的数据json
    JSONObject jsonObjRoot;
    try {
      jsonObjRoot = new JSONObject(jsonData);
     
      // 接口返回错误的场合
      if (jsonObjRoot.getInt("ret") != 0) {
        // 设置错误标识为真
        resultBean.setErrorFlg(true);
       
        // 设置错误编号
        resultBean.setErrorCode(jsonObjRoot.get("ret").toString());
       
        // 设置错误信息
        resultBean.setErrorMes(jsonObjRoot.getString("msg"));
       
        // 日志
        log.error("获取用户信息出错。错误编号:" + jsonObjRoot.get("ret").toString());
      } else {
        // 昵称
        resultBean.setNickName(jsonObjRoot.getString("nickname"));
       
        // 头像URL
        resultBean.setFigureUrl(jsonObjRoot.getString("figureurl"));
       
        // 头像URL
        resultBean.setFigureUrl1(jsonObjRoot.getString("figureurl_1"));
       
        // 头像URL
        resultBean.setFigureUrl2(jsonObjRoot.getString("figureurl_2"));
       
        // 性别
        resultBean.setGender(jsonObjRoot.getString("gender"));
       
        // 是否为黄钻
        resultBean.setIsVip(jsonObjRoot.getString("vip"));
       
        // 黄钻等级
        resultBean.setLevel(jsonObjRoot.getString("level"));
      }
    } catch (JSONException e) {
      e.printStackTrace();
      // 日志
      log.error("获取用户信息出错。接口返回数据:" + jsonData);
    }
   
    return resultBean;
  }
 
}
TOP

Related Classes of com.qq.open.qzone.user.QqGetUserInfo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.