前言
這篇文章原本應該是和上一篇連着一起寫出來的,但是我感覺吧分開寫比較清晰一點。。
本文主要實作目的目标需求為:企業微信登入擷取人員資訊
概述
直接進入正文,本文需要用到的參數為 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"
}