获取当前微信端用户信息 - 微信企业号中的账号以及设备ID
企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取成员的身份信息。
通过此接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案:
1、企业应用中的URL链接直接填写企业自己的页面地址
2、成员跳转到企业页面时,企业校验是否有代表成员身份的cookie,此cookie由企业生成
3、如果没有获取到cookie,重定向到OAuth验证链接,获取成员身份后,由企业生成代表成员身份的cookie
4、根据cookie获取成员身份,进入相应的页面
——以上来自微信
注意,此URL的域名,必须完全匹配企业应用设置项中的’可信域名’(如果你的redirect_uri有端口号,那’可信域名’也必须加上端口号),否则跳转时会提示redirect_uri参数错误。
首先企业获取code,根据code获取成员信息
代码实例:
//页面判断是否有code
if (!IsPostBack)
{
string code = "";
try
{
if (Request.QueryString["code"].ToString() != null)
{
code = Request.QueryString["code"].ToString();
}
}
catch (Exception ex) {
string url = getCode();
Response.Redirect(url);//回发获取 code
}
string userJson = GetUserId(code);
}
//获取code方法
private string getCode()
{
string appid = ConfigHelper.GetParameterValue("SystemConfig", "corpID");//corpID
string redirect_uri="";//编译后的URL
string strUrl = Request.Url.AbsoluteUri;
if (strUrl != null)
{
redirect_uri = HttpUtility.UrlEncode(strUrl, Encoding.UTF8);
}
string response_type = "code";
string scope = "snsapi_base";
string state = "1";
string url = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type={2}&scope={3}&state={4}#wechat_redirect", appid, redirect_uri, response_type, scope, state);
return url;//返回调用的URL及附带的参数,这个URL为现在页面的URL
}
Response.Redirect(url);//提交URL
/// <summary>
/// 获取用户ID
/// </summary>
/// <param name="codeNode">获取到的code</param>
/// <returns>返回格式为JSON</returns>
private string GetUserId(string codeNode)
{
AccessTokenEntity entity = TokenHelp.GetTokenEntity();
string access_token = entity.Access_Token;
string code = codeNode;
string agentid ="1";
var strUrl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}&agentid={2}", access_token, code, agentid);
string str = TokenHelp.GetPage(strUrl, "");
return str;
}