1、序言
接到个客户的需要,需要在微信企业号中,用户点击里面应用,去获取用户的信息。简单的制作了个demo,进行记录。
2、准备工作
1、首先,获取登录企业后台的权限,创建者把你加入到管理员组即可。
2、获取企业号的CorpID和Secret。具体位置如图所示
3、保存记录两个值,接下来,进行配置应用。在应用中心添加应用,选择主页型应用,并输入访问的地址信息。如下图
企业如果需要员工在跳转到企业网页时带上员工的身份信息,需构造如下的链接:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
- 参数说明
参数 | 必须 | 说明 |
---|---|---|
appid | 是 | 企业的CorpID |
redirect_uri | 是 | 授权后重定向的回调链接地址,请使用urlencode对链接进行处理 |
response_type | 是 | 返回类型,此时固定为:code |
scope | 是 | 应用授权作用域,此时固定为:snsapi_base |
state | 否 | 重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节 |
#wechat_redirect | 是 | 微信终端使用此参数判断是否需要带上身份信息 |
员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。
这样,在用户点击后,则可以获取到该用户的code值,此值也需要程序进行记录。3、程序开发
1、前台页面取值并调接口获取id
$('#index').on('pageshow', function(e) {code = location.href.split('?')[1].split('&')[0].split('=')[1];getUserId();
});
function getUserId (){var url = localURL+'/getUserId.json';var param = { code : code};var success = function (data) {userId = data.UserId;alert(userId);};var error = function (data) {};ajaxPost(url, param, success, error);
}
2、后台程序
private String CorpID = "xxxxxxxxxxxxxxxxxxxxxxx";private String Secret = "xxxxxxxxxxxxxxxxxxxxxxxxx";public String getToken() throws Exception{String strResult = null;List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("corpID", CorpID));params.add(new BasicNameValuePair("corpsecret", Secret));strResult = HttpUtil.sendRequestWechat("https://qyapi.weixin.qq.com/cgi-bin/gettoken", params);String token = JSONObject.fromObject(strResult).getString("access_token");return token;}@RequestMapping("/getUserId.{ext}")public Object getUserId (@RequestBody BaseForm form) throws Exception {String token = getToken();List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("access_token", token));params.add(new BasicNameValuePair("code", form.getCode()));String strResult = null;strResult = HttpUtil.sendRequestWechat("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo", params);String strOpenId = JSONObject.fromObject(strResult).getString("UserId");Map<String, String> mapResult = new HashMap<String, String>();mapResult.put("UserId", strOpenId);return mapResult;}
调用后,会发现可以获取到点击该应用用户的用户ID。切记,在调用获取信息接口之前,需要根据corpID和corpsecret获取token,然后再进行操作。
根据同样功能,可以进行获取其他企业号信息,比如企业号通讯录信息等。就不一一做例子了。
4、实例应用场景
本实例简单的demo例子,可以应用于,企业号关注者,点击企业号菜单后,能够跳入对应应用内容,开发者可以通过获取到的该userid进行登录操作,免除用户再次登录的麻烦。还有一些其他的场景,即获取用户的详细信息等,对应投放内容。
5、附录
微信企业号提供的在线接口验证:http://qydev.weixin.qq.com/debug
微信企业号提供的开发文档:http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5