zoukankan      html  css  js  c++  java
  • 企业微信创建自建应用-1(管理端)

    企业微信逐步收紧通讯录权限搞的第三方服务商鸡飞狗跳,如果对权限要求比较高的话尽量使用自建应用模式。两种模式大部分API都相同,重构一个自建应用版本工作量不大

    刚好通过这次重构项目记录下创建自建应用的步骤。

    为了习惯,分成了管理端(后台,在浏览器输入网址方式)+手机端(电脑端的企业微信登录也算手机端)两部分。

    文档链接:https://work.weixin.qq.com/api/doc/90000/90135/91022

    1、登录企业微信

    点击应用管理-》应用-》自建-》创建应用

     2、创建应用后,agentid和secret后面会用到,corpid有的是wx开头,有的以ww开头。

     3、如果使用企业微信扫码登录的话,需要在这里设置授权回调域名

     4、需要注意的是这个回调域名必须严格和下面的redirect_uri一致

    开发者需要构造如下的链接来获取code参数:

    1. https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=CORPID&agentid=AGENTID&redirect_uri=REDIRECT_URI&state=STATE

    参数说明

    参数必须说明
    appid 企业微信的CorpID,在企业微信管理端查看
    agentid 授权方的网页应用ID,在具体的网页应用中查看
    redirect_uri 重定向地址,需要进行UrlEncode
    state 用于保持请求和回调的状态,授权请求后原样带回给企业。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session进行校验

    若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与网页应用的可信域名不一致

    返回说明
    用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数

    redirect_uri?code=CODE&state=STATE

    若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数

    redirect_uri?state=STATE

    示例:

      1. 假定当前
      2. 企业CorpIDwxCorpId
      3. 开启授权登录的应用ID1000000
      4. 登录跳转链接:http://api.3dept.com
      5. state设置为:weblogin@gyoss9
      6. 需要配置的授权回调域为:api.3dept.com
      7. 根据URL规范,将上述参数分别进行UrlEncode,得到拼接的OAuth2链接为:
      8. https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=wxCorpId&agentid=1000000&redirect_uri=http%3A%2F%2Fapi.3dept.com&state=web_login%40gyoss9

     5、获取用户访问身份

    该接口用于根据code获取成员信息

    请求方式:GET(HTTPS)
    请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
    参数说明:

    参数必须说明
    access_token 调用接口凭证
    code 通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

    权限说明:
    跳转的域名须完全匹配access_token对应应用的可信域名,否则会返回50001错误。
    返回结果:
    a) 当用户为企业成员时返回示例如下:

    1. {
    2. "errcode": 0,
    3. "errmsg": "ok",
    4. "UserId":"USERID"
    5. }
    参数说明
    errcode 返回码
    errmsg 对返回码的文本描述内容
    UserId 成员UserID。若需要获得用户详情信息,可调用通讯录接口:读取成员

    b) 非企业成员授权时返回示例如下:

    1. {
    2. "errcode": 0,
    3. "errmsg": "ok",
    4. "OpenId":"OPENID"
    5. }
    参数说明
    errcode 返回码
    errmsg 对返回码的文本描述内容
    OpenId 非企业成员的标识,对当前企业唯一

    出错返回示例:

      1. {
      2. "errcode": 40029,
      3. "errmsg": "invalid code"
      4. }

    6、使用senparc库可以减少开发工作量,示例:

    senparc.Weixin.QY.AdvancedAPIs
    
    获取用户id,Senparc.Weixin.QY.AdvancedAPIs.OAuth2Api.GetUserId
    

    7、为了处理接收通讯录回调消息,需要设置接收事件服务器,这里的secret如果不进行通讯录写操作的话,不需要使用.

     

  • 相关阅读:
    归并排序(Merge Sort)
    归并排序
    数据结构(二)之二叉树
    数据结构(一)之线性表
    图解排序算法(五)之快速排序——三数取中法
    图解排序算法(四)之归并排序
    图解排序算法(三)之堆排序
    图解排序算法(二)之希尔排序
    图解排序算法(一)之3种简单排序(选择,冒泡,直接插入)
    [ Android 五种数据存储方式之三 ] —— SQLite存储数据
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/12669937.html
Copyright © 2011-2022 走看看