天天看點

企業微信開發:擷取使用者資訊(四)

前言

  這篇文章原本應該是和上一篇連着一起寫出來的,但是我感覺吧分開寫比較清晰一點。。

  本文主要實作目的目标需求為:企業微信登入擷取人員資訊

概述

  直接進入正文,本文需要用到的參數為 code 和 access_token

    1.擷取 code 請看:企業微信開發:網頁授權登入

    2.擷取 access_token 請看:企業微信開發:擷取 access_token

根據已經擷取的 access_token 和 code 換成員資訊

  請求方式: GET(HTTPS)

  請求位址: https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE

  參數說明:

參數 必須 說明
access_token 調用接口憑證
code 通過網頁授權擷取到的code,最大為512位元組。每次授權帶上的 code 将不一樣,code隻能使用一次,5分鐘未被使用自動過期

代碼片段

  這個是我自定義的一個工具類,主要是用來擷取成員資訊的 ,傳回值可定義為 String 或者自定義對象這個地方就不提供了

/**
 * @ClassName:UserIDAPI
 * @Description:TODO 擷取通路使用者身份
 * @Author LinLuoChen
 * @Date 2020/8/13/15:17
 * @Version V1.0
 **/
public class UserIdAPI {

    // 企業微信擷取通路使用者身份  
    private final static String qy_user_url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE";

    //擷取通路使用者身份
    public static UserID getUserIdInfo(String ACCESSTOKEN,String CODE){
        UserID userID = new UserID();
        String requestURL = qy_user_url.replace("ACCESSTOKEN", ACCESSTOKEN).replace( "CODE", CODE);
        JSONObject jsonObject = HttpRequestUtil.httpRequest(requestURL, EnumMethod.GET.name(), null);
        // 如果請求成功
        if (jsonObject != null) {
            try {
                System.out.println("擷取通路使用者身份接口傳回資訊:"+jsonObject);
                //  這個地方我隻拿了我用的
                userID.setUserId(jsonObject.getString("UserId"));
                userID.setDeviceId(jsonObject.getString("DeviceId"));
            } catch (Exception e) {
                userID = null;
            }
        }
        // 傳回類型可自定義
        return userID;
    }
}
           

  調用方法

public static void main(String[] args) {
   UserID userID = UserIdAPI.getUserIdInfo(accessToken,code);
   System.out.println("擷取使用者資訊為:"+userID);
}
           

測試結果

  當使用者為企業成員時傳回示例如下

{
   "errcode": 0,
   "errmsg": "ok",
   "UserId":"USERID",
   "DeviceId":"DEVICEID",
   "user_ticket": "USER_TICKET",
   "expires_in":7200
}
           

  參數說明:

參數 說明
errcode 傳回碼
errmsg 對傳回碼的文本描述内容
UserId 成員UserID
DeviceId 手機裝置号(由企業微信在安裝時随機生成,删除重裝會改變,更新不受影響)
user_ticket

成員票據,最大為512位元組。

scope為snsapi_userinfo或snsapi_privateinfo,且使用者在應用可見範圍之内時傳回此參數。

後續利用該參數可以擷取使用者資訊或敏感資訊。

expires_in user_ticket的有效時間(秒),随user_ticket一起傳回

  非企業成員授權時傳回示例如下

{
   "errcode": 0,
   "errmsg": "ok",
   "OpenId":"OPENID",
   "DeviceId":"DEVICEID"
}
           
參數 說明
errcode 傳回碼
errmsg 對傳回碼的文本描述内容
OpenId 非企業成員的辨別,對目前企業唯一
DeviceId 手機裝置号(由企業微信在安裝時随機生成,删除重裝會改變,更新不受影響)

  出錯傳回示例:

{
   "errcode": 40029,
   "errmsg": "invalid code"
}
           

繼續閱讀