企業微信單點登錄開發
? 公司目前做了一個基于Vuejs為前端加Java為后端的H5系統,公司很多客戶希望對接企業微信單點登錄。這里記錄下開發企業微信單點登錄模式。
? 為了測試方便,建立測試公司來做測試。
企業微信單點登錄流程
要實現單點登錄,先要注冊公司企業微信,然后配置應用,并配置相關的URL,信任域名,回調地址等。
簡單操作開發邏輯:
image
配置企業微信單點登錄注冊企業
首先需要注冊一個測試的企業:
填寫企業名稱等基本信息填寫管理員信息用微信掃碼綁定管理員微信
image
注冊成功
注冊成功后可以進入管理后臺,可以配置應用了。
image
配置應用
注冊好企業之后,進入管理控制后臺,可以在企業中配置應用了微信點單,點擊【創建應用】
image
配置應用基本信息,logo等
image
創建應用之后,和在調用接口的時候需要用到。
image
配置應用信任域名,如果沒有域名可以嘗試修改hosts來實現,但是只能在配置了hosts的機器上做測試
image
如果需要使用JS-SDK的話(只做單點登錄不需要配置),還需要驗證域名:
image
配置應用主頁信息
后面有詳細的應用【單點登錄地址】章節說明信息
image
完成之后如下
image
單點登錄地址
企業微信使用單點登錄,因此地址是一個單點登錄的地址微信點單,如下網址:
#
文檔地址:
參數說明:
參數必須說明
appid
是
企業的
是
授權后重定向的回調鏈接地址,此鏈接是開發者提前開發出來,會在微信登錄成功的時候跳轉到此URL,并附帶一個名為code的請求參數,然后可以根據這個code來獲取用戶信息,請使用對鏈接進行處理
是
返回類型,此時固定為:code
scope
是
應用授權作用域。企業自建應用固定填寫:
state
否
重定向后會帶上state參數,企業可以填寫a-zA-Z0-9的參數值,長度不可超過128個字節
#
是
終端使用此參數判斷是否需要帶上身份信息,注意URL hash是必須帶上的,不然可能會報錯:請在企業微信客戶端打開鏈接
需要轉碼之后拼接到URL之后
URL轉碼工具:
注意上面的來源是:
image
開發單點登錄
微信單點登錄已經有人開源出來一些調用工具,把相關token獲取(token有效期處理)和接口調用等工作封裝好,目前選擇此開源庫
選用企業微信模塊即可:
com.github.binarywang
weixin-java-cp
3.6.0
參考文檔地址:
如果不是用開源庫,使用等工具直接調用其API接口也能實現,參考官方文檔地址:
具體開發代碼:
public class QyWeixinLoginTest {
private static final Logger logger = LoggerFactory.getLogger(QyWeixinLoginTest.class);
public static final String CORP_ID = ""; // 企業的corpId
public static final Integer AGENT_ID = 1000002; // 企業應用的AgentId
public static final String APP_SECRET = ""; // 企業應用的Secret
public static final String CODE = ""; // OAUTH2 REDIRECT_URI接收的code(測試的時候可以在瀏覽器地址欄中復制出來)
@Test
public void test() throws Exception {
// 初始化WxCpService
WxCpService wxCpService = new WxCpServiceImpl();
WxCpDefaultConfigImpl wxCpConfigStorage = new WxCpDefaultConfigImpl();
wxCpConfigStorage.setCorpId(CORP_ID); // 企業的corpId
wxCpConfigStorage.setAgentId(AGENT_ID); // 企業應用的AgentId
wxCpConfigStorage.setCorpSecret(APP_SECRET); // 企業應用的Secret
wxCpService.setWxCpConfigStorage(wxCpConfigStorage);
// 調用獲取用戶信息
// 根據oauth2獲取到的code獲取用戶基本信息
WxCpOauth2UserInfo userInfo = wxCpService.getOauth2Service().getUserInfo(CODE);
if (userInfo != null) {
String userId = userInfo.getUserId();
if (StringUtils.isBlank(userId)) { // 用openId換取userId
userId = wxCpService.getUserService().openid2UserId(userInfo.getOpenId());
}
// 根據userId查詢微信中用戶詳情
WxCpUser userDetail = wxCpService.getUserService().getById(userId);
logger.debug("{}", userDetail);
}
}
}
// 拿到用戶信息之后就可以根據用戶的信息模擬登錄操作
測試單點登錄
如果有外網域名或者手機可以改hosts的話,單點登錄可以在手機上測試,但是卻沒有調試功能,最好的方式是使用【微信開發者工具】來做測試
下載微信開發者工具:
下載安裝之后,可以按照上面【單點登錄地址】拼接出URL地址,并復制到開發者工具的地址欄測試(開發者工具需要登錄和授權):
image
簡簡單單微信掃二維碼可以登錄,登錄成功后再次操作,可能遇到需要授權問題,提示信息:未綁定企業號開發者
image
在企業控制后臺中配置開發者工具授權:
image
然后可以測試可以獲取到用戶信息。
免責聲明:部分文章信息來源于網絡以及網友投稿,本站只負責對文章進行整理、排版、編輯,出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其內容的真實性,如本站文章和轉稿涉及版權等問題,請作者在及時聯系本站,我們會盡快為您處理。