微信企业号开发八:JSAPI模式之身份验证接口

       OAuth验证接口作用是当微信中的页面访问后台时,能够使后台知道是不是企业内部人员访问,是哪个员工访问,从而可以做相应的处理

---------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------

1、处理页面链接,使后台能获得微信提供的code

      对我们自己的链接进行urlencode处理,处理方法

     

var changeurl=getUrl.replace(/[:]/g,"%3a").replace(/[/]/g,"%2f").replace(/[\?]/g,"%3f").replace(/[=]/g,"%3d").replace(/[&]/g,"%26");
var tourl="https://open.weixin.qq.com/connect/oauth2/authorize?appid=自己的appid&redirect_uri="+changeurl+"&response_type=code&scope=snsapi_base&state=location#wechat_redirect";

企业获取code

企业如果需要员工在跳转到企业网页时带上员工的身份信息,需构造如下的链接:

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。

---------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------


2、后台根据code获得获得uesid

/**
  	 * 根据code获得人员
  	 */
  	public String getUserIdByCode(String code){
  	//获取微信号
    	String token=getTokenFromWx();
		 try {
			 CloseableHttpClient httpclient = HttpClients.createDefault();
			 HttpPost httpPost= new HttpPost("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token="+token+"&code="+code+"&agentid="+AGENT_ID_REGISTER);
			 // Create a custom response handler
			 ResponseHandler<JSONObject> responseHandler = new ResponseHandler<JSONObject>() {

                public JSONObject handleResponse(
                        final HttpResponse response) throws ClientProtocolException, IOException {
                    int status = response.getStatusLine().getStatusCode();
                    if (status >= 200 && status < 300) {
                        HttpEntity entity = response.getEntity();
                        if(null!=entity){
                        	String result= EntityUtils.toString(entity);
                            //根据字符串生成JSON对象
                   		 	JSONObject resultObj = JSONObject.fromObject(result);
                   		 	return resultObj;
                        }else{
                        	return null;
                        }
                    } else {
                        throw new ClientProtocolException("Unexpected response status: " + status);
                    }
                }

            };
          //返回的json对象
            JSONObject responseBody = httpclient.execute(httpPost, responseHandler);
            //AppLogUtil.getAppLoger().info(responseBody.toString());
            if(null==responseBody.getString("UserId")){
            	return null;
            }else{
            	return responseBody.getString("UserId"); 
            }
		 }catch (Exception e) {
			//e.printStackTrace();
			return null;
		}
  	}

官网API: http://qydev.weixin.qq.com/wiki/index.php?title=OAuth验证接口


  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牟云飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值