企业微信开发-网页授权及JS-SDK计入流程_第1页
企业微信开发-网页授权及JS-SDK计入流程_第2页
企业微信开发-网页授权及JS-SDK计入流程_第3页
企业微信开发-网页授权及JS-SDK计入流程_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 企业微信开发之授权登录注意事项:页授权及JS-SDK需要在企业微信上配置可信域名企业微信授权登录填写你的可信域名调流程为:A)户访问第三服务,第三服务通过构造OAuth2链接(参数包括当前第三服务的份ID,以及重定向URI),将户引导到认证服务器的授权页B)户选择是否同意授权C)若户同意授权,则认证服务器将户重向到第步指定的重定向URI,同时附上个授权码。D)第三服务收到授权码,带上授权码来源的重定向URI,向认证服务器申请凭证。E)认证服务器检查授权码和重定向URI的有效性,通过后颁发AccessToken(调凭证)OAuth2接流程使OAuth2前须知关于页授权的可信域名REDIRECT

2、_URL中的域名,需要先配置应的可信域名,否则跳转时会提“redirect_uri参数错误。要求配置的可信域名,必须与访问链接的域名完全致。举个例:假定重定向访问的链接是::8080/cgi-bin/helloworld:配置域名是否正确原因:8080配置域名与访问域名完全致配置域名必须与访问域名完全致配置域名必须与访问域名完全致*.不持泛域名设置配置域名必须与访问域名完全致,包括端号假定配置的可信域名是:访问链接是否正确原因/cgi-bin/helloworld配置域名与访问域名完全致/cgi-bin/redirect配置域名与访问域名完全致,与协议头链接路径关/cgi-bin/hellow

3、orld配置域名必须与访问域名完全致关于UserID机制UserId于在个企业内唯标识个户,通过页授权接可以获取到当前户的UserId信息,如果需要获取户的更多信息可以调通讯录管理 -成员接来获取。缓存案建议通过OAuth2.0验证接获取成员份会有定的时间开销。对于频繁获取成员份的场景,建议采如下案:1、企业应中的URL链接直接填写企业的页地址2、成员操作跳转到步骤1的企业页时,企业后台校验是否有标识成员份的cookie信息,此cookie由企业成3、如果没有匹配的cookie,则重定向到OAuth验证链接,获取成员的份信息后,由企业后台植标识成员份的cookie信息4、根据cookie获取成

4、员份后,再进相应的页构造页授权链接如果企业需要在打开的页携带户的份信息,第步需要构造如下的链接来获取code参数:/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect参数说明:参数必须说明appid 是 企业的CorpIDredirect_uri是 授权后重定向的回调链接地址,请使urlencode对链接进处理response_type是 返回类型,此时固定为:codescope是应授权作域

5、。snsapi_base:静默授权,可获取成员的基础信息;snsapi_userinfo:静默授权,可获取成员的详细信息,但不包含机、邮箱;snsapi_privateinfo:动授权,可获取成员的详细信息,包含机、邮箱。state否 重定向后会带上参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节#wechat_redirect是 终端使此参数判断是否需要带上份信息agentid 否 企业应的id。当scope是snsapi_userinfo或snsapi_privateinfo时,该参数必填。注意redirect_uri的域名必须与该应的可信域名致。员点击后,页将跳转r

6、edirect_uri?code=CODE&state=STATE,企业可根据code参数获得员的userid。code长度最为512字节。权限说明:企业限制;第三使snsapi_privateinfo的scope时,应必须有成员敏感信息授权的权限。根据code获取成员信息请求式:GET(HTTPS)请求地址:/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE参数说明:参数 必须 说明access_token 是 调接凭证code 是 通过成员授权获取到的code,最为512字节。每次成员授权带上的code将不样,code

7、只能使次,5分钟未被使动过期。权限说明:跳转的域名须完全匹配access_token对应应的可信域名。返回结果:a)当户为企业成员时返回例如下:errcode:0,errmsg:ok,UserId:USERID,DeviceId:DEVICEID,user_ticket:USER_TICKET,expires_in:7200参数 说明 errcode 返回码errmsg 对返回码的本描述内容UserId 成员UserIDDeviceId 机设备号由企业微信在安装时随机成,删除重装会改变,升级不受影响)user_ticket 成员票据,最为512字节。scope为snsapi_userinfo或

8、snsapi_privateinfo,且户在应可见范围之内时返回此参数。后续利该参数可以获取户信息或敏感信息。expires_in user_token的有效时间(秒),随user_ticket起返回企业成员授权时返回例如下:errcode:0,errmsg:ok,OpenId:OPENID,DeviceId:DEVICEID参数 说明 errcode 返回码errmsg 对返回码的本描述内容OpenId 企业成员的标识,对当前企业唯DeviceId 机设备号由企业微信在安装时随机成,删除重装会改变,升级不受影响)出错返回例:errcode:40029,errmsg:invalid code实

9、现代码:package com.eqiao.bidata.weixin.controller;import mon.AccessToken;import mon.Result;import mon.WeiXinQiYeConstants;import mon.WeiXinQiYeUtil;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.Requ

10、estMapping;import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import java.io.UnsupportedEncodingException;/*单纯实现OAuth2验证,不使注解及拦截器* Created by zhaoxinguo on 2017/7/11.*/Controllerpublic class SimpleOAuth2Contr

11、oller private Logger logger = LoggerFactory.getLogger(SimpleOAuth2Controller.class);/*拼接页授权链接*此处步骤也可以页链接代替* return*/RequestMapping(value = /oauth2wx.do )public String Oauth2API(HttpServletRequest request)获取项域名String requestUrl = request.getServerName();String contextPath = request.getContextPath();(

12、domain name: + requestUrl + project name: + contextPath);拼接微信回调地址String backUrl =http:/ + requestUrl + contextPath + /oauth2me.do;String redirect_uri = ;try redirect_uri = .URLEncoder.encode(backUrl, utf-8); catch (UnsupportedEncodingException e) e.printStackTrace();logger.error(ecdoe error: + e.get

13、Message();String oauth2Url = /connect/oauth2/authorize?appid= + WeiXinQiYeConstants.CORPID + &redirect_uri= +redirect_uri+ &response_type=code&scope=snsapi_base&state=STATE#wechat_redirect;return redirect: + oauth2Url;/*授权回调请求处理* return*/RequestMapping(value = /oauth2me.do )public String oAuth2Url(H

14、ttpServletRequest request, RequestParam String code)/调获取access_token的接AccessToken accessToken = WeiXinQiYeUtil.access_token();HttpSession session = request.getSession();if (accessToken != null & accessToken.getAccess_token() != null) /调获取户信息的接String UserId = getMemberGuidByCode(accessToken.getAccess

15、_token(), code, WeiXinQiYeConstants.AGENTID);(UserId: + UserId);if (UserId != null) session.setAttribute(UserId, UserId);(UserId放session成功!);/这简单处理存储到session中return user/result;/*调接获取户信息* param token* param code* return*/public String getMemberGuidByCode(String token, String code, String agentId) (c

16、ode= + code + token= + token + agentId= +agentId);Result result = WeiXinQiYeUtil.oAuth2GetUserByCode(token, code, agentId);(result= + result);if (result.getErrcode().equals(0) if (result.getUserId() != null & result.getUserId().length() 0) /此处可以通过微信授权code还钱的Userid查询本地服务器中的数据(result.getUserId(): + re

17、sult.getUserId();return result.getUserId();return ;/* 验证接根据code获取成员信息* param token* param code* return*/public static Result oAuth2GetUserByCode(String token, String code, String agentId) Result result = new Result();String menuUrl= WeiXinQiYeConstants.GET_OAUTH2_URL.replace(ACCESS_TOKEN, token).rep

18、lace(CODE,code).replace(AGENTID, agentId + );String userinfo = JHttpUtils.doGet(menuUrl);(userinfo: + userinfo);JSONObject jsonObject = null;if (userinfo != null) try jsonObject = JSONObject.fromObject(userinfo);(jsonObject: + jsonObject);if (jsonObject.getString(UserId) != null & jsonObject.getString(UserId).length() 0) result.setErrmsg(jsonObject.getString(errmsg);result.set

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论