上篇文章讲了怎么开发微信小程序获取授权登陆手把手教你一个人开发小程序前后端(考试系统代码分享) 。本篇讲一下开发企业微信小程序的流程,含代码分享
首先,需要注册企业资质的小程序,可以在企业订阅号中注册小程序,这样小程序就有了企业资质。
1、小程序注册后拿到appid发布
2、 需要在企业微信中绑定 获取到AppSecret
3、程序使用企业微信的Corpid和AppSecret 获取授权获取用户信息
首先 首先调用企业微信的登陆wx.qy.login 获取到code,调用后台接口 /QYWx/GetCode2Session。
wx.qy.getEnterpriseUserInfo 获取企业微信用户的信息。
getUserInfo:function() {
var self = this;
wx.qy.login({
success: function(res) {
if (res.code) {
//发起网络请求
wx.request({
url: BASE_URL+ '/QYWx/GetCode2Session',
data: {
code: res.code
},
success: function (res) {
self.setData({
userId :res.data.data
})
wx.qy.getEnterpriseUserInfo ({
success: function(res) {
var userInfo = res.userInfo
self.setData({
userName :userInfo.name
})
}
});
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
});
}
后台首先定义好两个地址 这是针对企业微信的地址。
private const string AccessToken_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=CorpID&corpsecret=SECRET";
private const string GetCode2Session_URL = "https://qyapi.weixin.qq.com/cgi-bin/miniprogram/jscode2session?access_token=ACCESS_TOKEN&js_code=CODE&grant_type=authorization_code";
后台根据code获取accestoken,然后用accesstoken和code 请求GetCode2Session_URL 这个地址获取到用户在企业微信中的userid.
public string GetCode2Session(string code)
{
GetQyWxAccessToken(out string access_token);
if (string.IsNullOrEmpty(access_token))
{
throw new Exception("获取accessToken失败!");
}
var url = GetCode2Session_URL.Replace("ACCESS_TOKEN", access_token).Replace("CODE", code);
var ret = new ClientHelper().SendRequestGet<WXUserResulet>(url);
Console.WriteLine("GetCode2Sessionret:" + JsonConvert.SerializeObject(ret));
if (ret != null && ret.errcode == 0)
{
//创建token 存储映射关系返回token
var token = Guid.NewGuid().ToString().Replace("-", "") + DateTime.Now.ToString("yyyyHHmmddMMss");
_cache.Remove(ret.userid);
_cache.Set(token, ret.userid, TimeSpan.FromDays(7200));
var test = _cache.Get<string>(token);
return token;
}
return "";
}
GetQyWxAccessToken 方法则是根据获取的Corpid和AppSecret调用AccessToken_URL来获取accestoken。
public void GetQyWxAccessToken(out string access_token)
{
access_token = "";
string accesstoken = _cache.Get<string>(RedisKeyConst.QyWxAccessTokenKey);
if (!string.IsNullOrEmpty(accesstoken))
{
access_token = accesstoken;
return;
}
var url = AccessToken_URL.Replace("CorpID", QyWxConst.QyWxCorpid).Replace("SECRET", QyWxConst.QyWxAppSecret);
var token = new ClientHelper().SendRequestGet<WXResult_Token>(url);
Console.WriteLine("token:" + JsonConvert.SerializeObject(token));
if (token != null && token.access_token != null && token.errcode == 0)
{
access_token = token.access_token;
_cache.Set(RedisKeyConst.QyWxAccessTokenKey, access_token, TimeSpan.FromSeconds(7200));
}
return;
}
这样,用户从企业微信中打开小程序授权就可以登录同时后台获取到企业微信中的userid.。手机号信息是加密的,需要调用解密方法才能拿到手机号。