• 开发微信企业号在调用获取成员时。总是提示没有权限的错误,自己知道是没有相应的权限,但怎样分配权限呢?{"errcode":60011,"errmsg":"no privilege to access\/modify contact\/party\/agent "}第一步登陆PC版...

      开发微信企业号在调用获取成员时。总是提示没有权限的错误,自己知道是没有相应的权限,但怎样分配权限呢?

    {"errcode":60011,"errmsg":"no privilege to access\/modify contact\/party\/agent "}


     第一步登陆PC版企业号,点右側击设置,再点击权限管理。再点击管理组,再点击通讯录权限的改动。


    第二步 弹出选择权限的对话框,选择权限后点击确定,然后再測试就不会出现关于权限的错误了


    转载于:https://www.cnblogs.com/wzjhoutai/p/6946325.html

    展开全文
  • 微信的官方文档没有找到完整的说明... '开发管理与数据分析权限', '19' => '客服消息管理权限', '25' => '开放平台帐号管理权限', '30' => '小程序基本信息设置权限', '31' => '小程序认证权限', '...

    微信的官方文档没有找到完整的说明,以下数据是一个一个授权对比得到,特此备注

    return [
    	'17' => '帐号管理权限',
    	'18' => '开发管理与数据分析权限',
    	'19' => '客服消息管理权限',
    	'25' => '开放平台帐号管理权限',
    	'30' => '小程序基本信息设置权限',
    	'31' => '小程序认证权限',
    	'36' => '微信卡路里权限',
    	'37' => '小程序附近地点权限',
    	'40' => '小程序插件管理权限',
    	'41' => '好物圈权限',
    	'45' => '物流助手权限',
    	'48' => '微信财政电子票据权限'
    ]
    
    展开全文
  • 引入 要理解微信小程序的成员管理,首先要理解微信小程序的注册。 ... ... ...仅凭微信号无法进行微信小程序的开发。 仅凭微信小程序登录账号也无法进行微信小程序的开发,需要同得到授权的微信号一起使用。 ...

    引入

    要理解微信小程序的成员管理,首先要理解微信小程序的注册。

    1. 微信小程序的注册需要用户提供一个邮箱作为登录账号,并绑定一个微信号作为管理员。
    2. 登录账号会得到一个官方提供的appid作为标识码,作为登录账号的凭证。
    3. 微信小程序登录账号与微信号是不同的东西。
    4. 仅凭微信号无法进行微信小程序的开发。
    5. 仅凭微信小程序登录账号也无法进行微信小程序的开发,需要同得到授权的微信号一起使用。
      这里写图片描述

    成员管理

    功能介绍

    管理员可在小程序管理后台统一管理项目成员(包括开发者、体验者及其他成员)、设置项目成员的权限,包括:开发者/体验者权限、登录小程序管理后台、开发管理、查看小程序数据分析等。

    成员管理入口

    小程序管理后台(mp.weixin.qq.com)- 用户身份 – 成员管理

    成员权限说明及理解

    1、开发者权限

    可使用开发者工具、开发版进行小程序开发。即被授权的微信号可以通过该微信小程序账号的appid启动微信开发者工具。(若无授权,无法使用该appid)

    2、体验者权限

    可使用体验版小程序

    这里写图片描述

    这里写图片描述

    3、登录

    扫码后可直接登录小程序管理后台,无需管理员确认

    4、数据分析

    使用小程序数据分析功能查看小程序数据

    5、开发管理

    小程序发布、提交审核、回退

    6、开发设置

    设置小程序服务器域名、消息推送及扫码打开小程序

    7、暂停服务

    暂停小程序线上服务解除

    8、关联公众号

    解除小程序与公众号的关联

    9、腾讯云管理

    访问腾讯云控制台,对生产环境进行管理


    开发管理

    1、开发版本

    使用开发者工具,可将代码上传到开发版本中。 开发版本只保留每人最新的一份上传的代码。点击提交审核,可将代码提交审核。开发版本可删除,不影响线上版本和审核中版本的代码。

    2、审核中版本

    只能有一份代码处于审核中。有审核结果后可以发布到线上,也可直接重新提交审核,覆盖原审核版本。

    3、线上版本

    线上所有用户使用的代码版本,该版本代码在新版本代码发布后被覆盖更新。


    作用

    为需要开发多个微信小程序的团队提供一个统一的账号及后台管理。

    展开全文
  • 微信开发的概念

    2019-12-03 23:23:16
    微信开发的概念 什么是微信开发 微信这个软件,提供了聊天、支付、分享、收藏等各种功能,同时用户基数庞大; 微信对外开放了很多接口和能力,程序员基于这些功能进行的二次开发,叫做微信开发 微信开放平台 微信...

    微信开发的概念

    什么是微信开发

    微信这个软件,提供了聊天、支付、分享、收藏等各种功能,同时用户基数庞大;
    微信对外开放了很多接口和能力,程序员基于这些功能进行的二次开发,叫做微信开发

    微信开放平台

    微信开放平台是微信对外提供微信开放接口的一个平台,这些开放出来的微信接口,供第三方的网站或App使用;
    平台登录地址:https://open.weixin.qq.com

    微信开放平台的能力

    • 微信分享
    • 微信支付
    • 微信登录
    • 微信收藏
    • etc…

    谁会使用微信开放平台

    • 第三方的网站
    • 第三方的App
    • 后台开发人员

    开发者资质认证

    • 只有通过 开发者资质认证 后,才能使用开放平台提供的能力;
    • 个人名义,无法申请资质认证;
    • 只有企业类型的主体,才能申请资质认证

    微信公众平台

    • 微信公众平台:是运营者通过公众号这个媒介,为微信用户提供资讯和服务的平台;
    • 微信公众平台开发:是指基于微信公众号进行的业务开发;
    • 平台登录地址:https://mp.weixin.qq.com

    微信公众平台

    微信公众平台的账号分类

    在这里插入图片描述

    如何选择适合自己的公众号类型

    • 如果想简单的发送消息,达到宣传效果,建议选择订阅号;
    • 如果想用公众号获得更多的功能、提供更多的服务,例如开通微信支付,建议选择服务号;
    • 如果想用来管理内部企业员工、团队,对内使用,可申请企业微信(原企业号);
    • 如果想提供类似于手机App的服务体验,建议选择小程序;

    开放平台与公众平台的区别

    开放平台:

    • 是微信对外开放API接口的平台
    • 开放的API接口,供第三方网站和App调用
    • 后端程序员是开放平台开发的主力军

    公众平台:

    • 是基于微信公众号,为微信用户提供服务的平台
    • 所有公众号,都属于微信内开发
    • 前端程序员是公众平台开发的主力军

    小程序

    相关概念

    什么是小程序

    官方定义: 微信小程序是一种全新的连接用户与服务的媒介,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

    小程序的特点:体积小、方便获取与传播;

    小程序的理念:用完即走;

    小程序出现的目的

    拦截用户流量入口,今后,用户每天的大多数应用需求,都可从微信小程序中得到满足

    小程序和订阅号、服务号的区别

    发布时间不同

    • 2012-07 公众平台发布
    • 2017-01 小程序发布

    入口方式不同

    • 订阅号、服务号是作为微信联系人存在的
    • 小程序有自己的独立入口

    体验效果不同

    • 订阅号、服务号体验差、无法提供类似于App的体验
    • 小程序模拟了手机App的体验,更人性化

    小程序适合的业务

    适合做用完即走的应用:

    • 例如:点外卖、打车、代驾、共享单车等;

    不适合做重度依赖的应用:

    • 例如:音乐视频播放类、大型手机游戏类等;

    小程序和传统手机App的区别

    开发原理不同

    • App:基于手机操作系统提供的API进行开发;
    • 小程序:基于微信提供的API进行开发;

    运行方式不同

    • App:直接安装并运行在手机操作系统之上;
    • 小程序:必须基于手机微信才能安装和运行;
      在这里插入图片描述

    小程序使用

    小程序组件

    组件是视图层的基本组成单元,它自带一些功能与微信风格一致的样式;
    一个组件通常包括 开始标签 和 结束标签,属性 用来修饰这个组件,内容 在两个标签之内
    注意:所有 组件名称 与 属性名称 都是小写

    API

    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数

    目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力。通过API,开发人员无需访问程序的源码,或理解其内部工作机制的细节。

    微信同样提供了对外访问的 API ,这些 API 是微信开放给小程序开发者使用的能力。例如:微信扫码、获取用户的地理位置、微信支付等等。丰富的微信 API 和庞大的用户群体,是小程序开发的魅力所在

    API 的三种分类

    事件监听 API

    • 特点:这类 API 以 on 开头,用来监听某个事件是否触发
    • 举例:wx.onNetworkStatusChange(function callback) // 当网络状态更改时触发此事件

    同步 API

    • 特点1:以 Sync 结尾的 API 都是同步 API
    • 特点2:同步 API 的执行结果,可以通过函数返回值直接获取
    • 举例:var batteryInfo = wx.getBatteryInfoSync() // 获取电池信息

    异步 API

    • 特点:通常需要指定回调函数接收调用的结果;小程序中,大多数 API 都是异步 API
    • 举例:wx.request(Object object) // 发起 HTTPS 网络请求

    官方示例中展示的API接口

    可以扫码体验小程序中的API接口,例如:发起支付、获取手机网络状态、发起网络请求等
    在这里插入图片描述

    组件和API的异同点

    相同点:

    • 组件 和 API 都是微信官方提供的
    • 组件 和 API 的目的,都是为了方便小程序的快速开发

    不同点:

    • 组件以UI结构布局为主,一般不需要处理业务逻辑
    • API 以纯业务逻辑为主,一般没有对应的UI结构

    小程序开发账号

    注册小程序开发账号

    小程序账号设置

    刚注册的小程序账号,基本信息尚未被初始化,推荐进行账号设置:

    基本信息设置

    • 登录小程序后台 -> 设置 -> 基本设置
    • 在基本设置中,可以设置小程序头像、小程序名称、介绍、服务类目等基本信息
      在这里插入图片描述

    开发者设置

    • 登录小程序后台 -> 开发 -> 开发设置
    • 开发者ID 是唯一的
    • 服务器域名 可以去阿里云,腾讯云申请相应域名
      在这里插入图片描述

    成员管理

    一个团队进行小程序的开发,那么团队成员的身份管理是很有必要的
    管理员可在小程序管理后台统一管理项目成员、设置项目成员的权限
    管理员可以为项目成员分配的权限如下:

    • 开发者权限:开发模块权限,可使用体验版小程序、开发者工具(IDE)
    • 运营者权限:管理、推广、设置等模块权限,可使用体验版小程序
    • 数据分析者(基础分析):统计模块权限,可使用体验版小程序

    添加成员和分配权限

    小程序开发者工具的使用

    下载并安装微信开发者工具

    根据自己的操作系统下载对应的安装包进行安装。

    下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
    在这里插入图片描述

    创建一个小程序项目

    • 打开小程序开发者工具,用微信扫码登录开发者工具
    • 点击左侧菜单中的小程序选项
    • 点击+号新建小程序项目
    • 填写项目名称
    • 选择项目存放路径(必须选择空目录)
    • 填写AppID
    • 点击新建按钮
      在这里插入图片描述

    预览小程序

    作用:通过预览功能,可以在真机环境下,快速查看小程序的实际效果

    • 点击 工具栏 -> 预览 即可弹出预览窗口
    • 预览方式:扫描二维码预览、自动预览
      在这里插入图片描述

    开发者工具主界面功能介绍

    开发者工具主界面,从上到下,从左到右,分别为五大部分:

    • 菜单栏
    • 工具栏
    • 模拟器
    • 编辑器
    • 调试器
      在这里插入图片描述
    展开全文
  • 过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。 微信公众平台官网:https://mp.weixin.qq.com 文章目录一、注册公众号二、了解公众号管理页面三、必备...

    背景:
    过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。

    微信公众平台官网:https://mp.weixin.qq.com



    一、注册公众号

    在这里插入图片描述
    首先注册时可以看到公众号有三种类型,个人用户大多数选择订阅号,而企业用户一般选择服务号和企业号

    我们平常大多数关注的都是订阅号,他们统一都放置在微信应用的订阅号消息列表中,没有微信支付等高级功能,只是用于发布文章等基础功能。
    在这里插入图片描述

    服务号企业号都在会话列表,和我们的微信好友是同级别的位置,具备微信支付等高级功能,一般是某个企业品牌的对外操作窗口,如海底捞火锅、顺丰速运等。
    在这里插入图片描述

    我们前期开发测试只需要注册个人订阅号即可,真正开发使用的是开发者工具里的测试号,具体下面会说。

    真正生产的话,使用的都是经过微信认证的订阅号、服务号、企业号。


    二、了解公众号管理页面

    我们在微信公众平台扫码登录后可以发现管理页面左侧菜单栏有丰富的功能:
    在这里插入图片描述
    大概可以分为这几大模块:
    首页功能小程序管理推广统计设置开发

    作为开发人员,首先应该关注的是设置、开发模块;而作为产品运营人员,关注的是功能、管理、推广模块;作为数据分析人员,关注的是统计模块。

    首先我们不妨各个功能模块都点击看一看,大概了解下我们能做些什么。可以确认的是,这个微信公众平台当然不只是给开发人员使用的,它提供了很多非技术人员可在UI界面上交互操作的功能模块。

    如配置消息回复、自定义菜单、发布文章等:
    在这里插入图片描述
    这个时候我们可能会想:这些功能好像非技术人员都能随意操作,那么还需要我们技术人员去开发吗?

    答案是: 如果只是日常简单的推送文章,就像我们关注的大多数公众号一样,那确实不需要技术人员去开发;但是,如果你想将你们的网站嵌入进去公众号菜单里(这里指的是把前端项目的首页链接配置在自定义菜单),并且实现微信端的独立登录认证、获取微信用户信息、微信支付等高级功能,或者觉得UI交互的配置方式无法满足你的需求,你需要更加自由、随心所欲的操作,那么我们就必须启用开发者模式了,通过技术人员的手段去灵活控制公众号。

    这里有一点需要注意,如果我们决定技术人员开发公众号,必须启用服务器配置,而这将导致UI界面设置的自动回复和自定义菜单失效!

    我们在 开发 - 基本配置 - 服务器配置 中点击启用
    在这里插入图片描述
    在这里插入图片描述
    我们团队就遇到过这种情况:两个项目组共用一个公众号,结果一个启用了服务器配置,使另一个项目组手动配置的菜单失效了。所以要注意这点!

    至于服务器配置中的选项代表什么意思、如何填写,我们下面再讲。


    三、必备开发者工具的使用

    在这里插入图片描述
    我们进入 开发 - 开发者工具, 可以发现微信提供了六种开发者工具,其中前四种属于开发必备:开发者文档在线接口调试工具web开发者工具公众平台测试账号

    1.开发者文档

    在这里插入图片描述
    这个不用说!在我们开发中属于最最最基础和重要的东西了,我们要想熟练开发公众号,首先必须熟读开发者文档!有些功能的开发甚至非要反复研读、咬文嚼字一番不可。PS:该文档吐槽的地方也不少,有些地方的确讲的不够明确!

    2.在线接口调试工具

    在这里插入图片描述
    这个工具也算比较实用,包含大多数接口的在线调试,我们可以直接在上面输入参数,获取微信服务端的返回结果。

    3.web开发者工具

    在这里插入图片描述
    这个工具是一款桌面应用,需要下载,它通过模拟微信客户端的UI使得开发者可以使用这个工具方便地在PC或者Mac上进行开发和调试工作,一般是前端使用该工具进行页面、接口调试。

    4.公众平台测试账号

    在这里插入图片描述
    这个测试号工具对我们的重要性可以说是仅次于开发者文档。我们可以创建测试号无需申请、认证真实的公众帐号、可在测试帐号中体验并测试微信公众平台所有高级接口。并且所有的配置都可在一个页面上编辑,使开发测试变得极其便利。


    四、细读开发者文档

    文档地址:https://mp.weixin.qq.com/wiki

    需要注意的是,细读开发者文档不是让你所有模块都去阅读,而是重点的重复细读,非重点的选择性阅读。
    在这里插入图片描述
    其中前两个模块:开始前必读开始开发,属于重点关注对象,也是整个微信开发的基石所在,需要多读几遍。其次是微信网页开发模块微信网页授权,比较难理解,需要特别注意。其他的模块则根据你们的项目功能需求,有选择性的阅读即可。

    这里我就不多罗嗦了,大家看文档去吧!下面我会描述一些重点内容的实际操作情况以及代码,请确保你已经浏览过文档


    五、开发流程重点解析


    1.开发环境准备

    这里所谓的开发环境准备主要指的是我们项目服务端和微信服务端的网络通讯环境准备。

    我们平常开发可能只需要IP端口就能通讯,顶多配置下白名单放行,但微信公众号开发我们需要通过域名通讯(微信会访问我们配置的域名地址:服务器基本配置中的URL,下面会介绍),也就是我们各自开发环境需要拥有独立的域名,微信就能通过这个域名请求到我们的本地开发服务,各自进行开发测试。

    而我们一般都是内网开发,整个内网只有一个对外域名,所以这时就需要 内网穿透 ,为我们每个开发人员配置各自开发机器的域名。

    那如何进行内网穿透呢?你首先可以找下你们的网管,看他能不能帮你解决,如果不能,那就安装内网穿透工具,我们自己动手!

    我选择的内网穿透工具是natapp,这个有免费版、收费版,免费版的域名会随机变化,而收费版可以拥有固定域名,建议选择收费版,9元每月并不贵;大家可以对照natapp的文档安装使用,并不难。
    在这里插入图片描述
    这样我们本地开发环境就拥有自己的域名啦!然后就可以在测试号管理页面配置本地访问地址URL了。

    2.服务器基本配置

    无论是在真实公众号开发 - 基本配置 - 服务器配置,还是在 测试号管理 中,我们都可以看到这几个基本参数:
    开发者ID(AppID)、开发者密码(AppSecret)、服务器地址(URL)、令牌(Token)

    AppID 是公众号唯一开发识别码,配合开发者密码可调用公众号的接口能力,大多数微信接口都需要附带该参数。

    AppSecret 是校验公众号开发者身份的密码,具有极高的安全性。切记勿把密码直接交给第三方开发者或直接存储在代码中。如需第三方代开发公众号,请使用授权方式接入。其中获取accessToken就需要同时传入AppID和AppSecret获取。

    URL 是开发者用来接收微信消息和事件的接口URL,也就是我们服务后端的入口地址,需要注意的是该地址必须以域名形式填写,且必须以http 或 https 开头,分别支持80端口和443端口。如:http://yuanj.natapp1.cc/wechat。

    Token 可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性),也就是我们项目和微信服务端进行通信时,必须保证公众平台配置的Token和我们后台代码配置的Token保持一致,这样微信就能验证我们身份。

    注:EncodingAESKey 参数由开发者手动填写或随机生成,将用作消息体加解密密钥,我们前期可以采用明文模式进行开发测试,暂时先不用关注。
    在这里插入图片描述
    我们点击提交时,微信会以GET请求的方式访问我们配置的URL地址,并附加几个参数进行验证,所以你需要在该地址对应的项目后端接口里对这几个参数进行加工处理返回微信需要的结果,这样就可以验证成功,使微信服务端认可你配置的URL和Token参数,后续就能互相通信了!
    在这里插入图片描述
    具体情况可以阅读微信文档 - 开始前必读 - 接入指南

    这里附上该接口的Java代码:

    /**
     * 微信对接验证接口
     * */
    @RestController
    @RequestMapping(value = "/wechat")
    public class ValidateController {
        @Autowired
        WechatConfig wechatConfig;
    
       @RequestMapping(value = "", method = RequestMethod.GET)
       public void validate(HttpServletRequest req, HttpServletResponse resp) {
            System.out.println("-----开始校验签名-----");
    
            // 接收微信服务器发送请求时传递过来的参数
            String signature = req.getParameter("signature");
            String timestamp = req.getParameter("timestamp");
            String nonce = req.getParameter("nonce"); //随机数
            String echostr = req.getParameter("echostr");//随机字符串
    
            // 将token、timestamp、nonce三个参数进行字典序排序并拼接为一个字符串
            String TOKEN = wechatConfig.getToken();
            String sortStr = sort(TOKEN,timestamp,nonce);
            
            // 字符串进行shal加密
            String mySignature = WechatUtils.shal(sortStr);
            
            // 校验微信服务器传递过来的签名 和  加密后的字符串是否一致, 若一致则签名通过
            if(!"".equals(signature) && !"".equals(mySignature) && signature.equals(mySignature)){
                System.out.println("-----签名校验通过-----");
                try {
                    resp.getWriter().write(echostr);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }else {
                System.out.println("-----校验签名失败-----");
            }
        }
        
       /**
         * 参数排序
         * @param token
         * @param timestamp
         * @param nonce
         * @return
         */
        public static String sort(String token, String timestamp, String nonce) {
            String[] strArray = {token, timestamp, nonce};
            Arrays.sort(strArray);
            StringBuilder sb = new StringBuilder();
            for (String str : strArray) {
                sb.append(str);
            }
            return sb.toString();
        }
    }
    
    

    3.存取access_token参数

    access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时(7200秒),需定时刷新重复获取将导致上次获取的access_token失效

    access_token这个参数非常重要,几乎贯穿整个微信公关号项目开发,我们如何在有效期内定时刷新获取呢?
    如果我们的微信公众号项目是单服务架构,可以直接作为静态变量存储在内存里;如果是多服务,可以用中间件存储Redis、数据库都可以。SpringBoot项目内部可以通过@Scheduled注解,执行定时任务,既然access_token有效期是2小时,那我们可以一小时刷新获取一次,将其存入Redis,覆盖之前的access_token。


    4.公众号消息管理

    在这里插入图片描述
    很多公众号都可以通过消息发送来与其进行交互,那这样的功能如何代码实现呢?

    具体我们可以在微信文档 - 消息管理 模块查阅:
    在这里插入图片描述
    在此我要提到的一点就 微信公众号的消息交互都是通过XML格式进行的!这点就很坑了。。现在我们前后端、服务端的消息传输基本都是Json格式了,也习惯了Json格式的解析处理,所以遇到XMl格式的处理又要多费些事了。

    为什么微信采用XML格式呢?我个人猜测是几年前还是XML格式的天下,当时Json还没有这么流行,腾讯毕竟是产品业务驱动的,当然选择当时开发人员最熟悉的XML格式了开发,后面随着微信平台的普及,用户越来越多,想重构改成Json格式估计也十分困难,所以历史就遗留下来了呗。。

    我在此推荐一个GitHub上一个微信开发 Java SDK,里面有整个微信开发平台很多功能模块造好的轮子,我们可以参考下直接使用:
    https://github.com/Wechat-Group/WxJava
    在这里插入图片描述
    比如现在对于XMl消息解析这个需求,上面就提供了完整详尽的代码。


    5.获取openid以及网页授权(重难点)

    注意,这是公众号开发的重难点之一,请把技术文档中的微信网页授权模块多读两遍,然后带着疑问来看我的解析。

    (1)先明确为什么需要网页授权?我们的目的是什么?

    答:用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。也就是通过这种授权机制,我们能获取微信用户信息,比如:头像、昵称、地区、个性签名等。

    (2)既然目的是获取用户基本信息,微信不是提供了专门的接口吗?非要网页授权?

    答:在文档的 用户管理 - 获取用户基本信息(UnionID机制) 模块可以看到的确有获取用户基本信息接口:
    在这里插入图片描述
    可以看到,这个接口只需要提供openid或者unionid,即可直接获取用户基本信息。那么问题来了,openid(unionid)又是如何获取呢?

    微信平台提供了两种方式获取用户的openid

    第一种方式:

    用户与公众号产生消息交互时,会以POST请求的方式向我们配置的服务器URL地址发送XML格式的消息,并附带该用户对应公众号的openid!关于什么是消息交互我们可以查看文档中的消息管理模块,比如我们在公众号输入栏中发送文字图片语音等属于普通消息交互,我们关注、取关、点击自定义菜单等属于事件消息交互,每当前端用户进行这个操作时,微信服务端都会向我们项目后台发送POST请求给我们传达信息:
    在这里插入图片描述
    可以看到,这个推送数据包中就包含了用户的消息交互类型、时间以及我们需要的openid!也就是说,无论用户在公众号里干了啥操作,我们都能知道他这个操作干了啥,以及他是谁(openid),这时就能调用 用户管理 - 获取用户基本信息(UnionID机制) 接口获取用户基本信息了。

    别高兴太早,这种通过消息交互获取用户信息的方式,用户占主动地位,我们项目后端服务被动接受,那么如果我有个基本需求:我想在自定义菜单 - 对应我们网站的前端页面上展示微信用户基本信息,能做到吗?你如何把后台接收到的消息和前端用户关联绑定?
    可见,这种被动的方式并不能实现该功能,我们需要主动出击,在前端就能获取到当前操作用户的openid!

    第二种方式:

    这种方式就是通过网页授权机制主动出击!详情见下文。

    (3)网页授权有哪几种机制?分别是怎样实现?应用于什么场景?

    答:主要有两种机制,对应两种scope:

    snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)。

    snsapi_userinfo为scope发起的网页授权,是用来获取用户基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

    光看这两句解释你可能有一堆疑问,我们逐一分析:

    两种机制的前面授权步骤相同,大概如下:

    我们先要按照文档要求构造一个链接https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
    其中重点参数是redirect_uri,这个参数填的既可以是前端项目url,也可以是后端接口url,然后点击这个链接后,微信服务端经过重定向到我们填写的redirect_uri,会在此redirect_uri后拼接上一个code参数!然后前端或者后端通过code参数就可以调微信接口https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code获取openid等信息了:
    在这里插入图片描述
    这里讲下 snsapi_basesnsapi_userinfo不同点

    首先snsapi_base静默授权,什么意思呢?就是用户没有感知;与之对应的就是非静默授权snsapi_userinfo了,这个scope公众号会弹出一个小窗口需要用户手动点击授权,类似这种:
    在这里插入图片描述
    那么这两种scope授权的优劣势在哪呢?

    snsapi_base 的优势在于用户无感知,体验好,方便快捷;劣势在于获取openid后只能通过用户管理 - 获取用户基本信息(UnionID机制) 接口获取用户基本信息,而这种方式需要确保用户已经关注,不然是没有相关信息的!
    snsapi_userinfo 的优势在于无需用户关注公众号,只要用户点击了授权确认,即可通过access_token和openid调用专门的拉去用户信息接口获取信息,比较暴力。。;劣势在于需要用户手动授权,可能影响用户体验
    在这里插入图片描述

    在此说下,我们项目是通过snsapi_base静默授权的,其中redirect_uri配置的是前端项目首页地址(前后端分离),并将构造的这个链接封装起来,直接配置在自定义菜单里,那么用户点击菜单,就直接重定向到前端项目,然后前端获取code参数调用后端获取openid接口,将获取的openid缓存到客户端,以便后面使用。

    (4)想要进行网页授权,我们需要在公众平台配置什么吗?

    答:需要!
    如果是测试号,需要在 测试号管理 - 体验接口权限表 - 网页服务 - 网页帐号 点击 修改
    在这里插入图片描述
    在这里插入图片描述
    在这里配置的是回调页面redirect_uri的域名

    如果是正式号(需要微信认证),需要在 开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息 的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;

    而且正式号其他配置的地方也和测试号不一样,比如多了IP白名单、域名根路径下的txt验证文件,这个稍微摸索下应该没啥问题的。


    over 暂时就回忆这么多了。。。可能有遗漏大家可以提出哈 ~ 下一篇博客写几个开发时的小问题补充下吧

    展开全文
  • C#微信开发

    2017-12-24 10:35:37
    C#开发微信门户及应用教程   作者:伍华聪   C#开发微信门户及应用(1)--开始使用微信接口 6 1、微信账号 6 2、微信菜单定义 7 3、接入微信的链接处理 8 4、使用开发方式创建菜单 14 5、我创建的菜单案例 17 C#...
  • 微信公众号主要有以下几个步骤 微信公众号的通讯机制 微信公众号简介 1.注册微信公众号 2.注册测试公众号 3.搭建微信本地调试环境 1)下载客户端natapp: 2)安装natapp: 4.微信公众号接入(校验签名) 第1步中...
  • 手机里微信群聊天记录很多,想把这些聊天记录提取出来分析一下有用的信息。 查找一下 首先看一下有没有人之前做个这个项目,如果有的话就不用浪费时间开发了,果然找到一些 从电脑上提取微信聊天记录。 Python - ...
  • CleverCode前一段时间想去接触一下微信开发,申请了一个人订阅号,发现暂不能申请个人认证,而且没有微信接口的很多权限,也没有自定义菜单的权限(开发模式下)。在开发模式下,只能到手公众号里面的回复信息,然后...
  • 微信开放平台还提供了数据统计功能,用于开发者统计接入应用的登录、分享等数据情况。 接入步骤 已京东APP举例,比如京东APP需要使用微信登录、分享和微信支付功能,首先注册微信开发平台-开发者账号,并按照以下...
  • 第5章 基于CodeIgniter的微信公众平台开发框架 5.1 CodeIgniter简介 57 5.2 工程代码改造 59 5.3 微信公众号开发配置 60 5.4 小结 63 第6章 微信网页开发 6.1 微信网页授权原理 64 6.1.1 网页...
  • 文章目录背景问题分析处理流程1、小程序基础功能开发,提交审核2、企业微信关联小程序3、获取关联小程序的 Secret,设置可见范围4、修改小程序4.1、判断运行环境4.2、权限校验参考资料 背景 为其他公司开发一个小...
  • 微信开发

    2018-02-03 09:43:44
    一、微信开发的整体介绍 开放平台:https://open.weixin.qq.com/ 公众平台:https://mp.weixin.qq.com/ 1、微信开发的种类 ①移动应用开发 支持微信的分享、收藏、支付三大功能,原生开发的人员去使用的开发...
  • 本资源是《微信公众平台小程序开发 从零搭建套系统》高清PDF扫描版。该书由张剑明著,中国工信出版集团和人民邮电出版社联合出版,有需要的小伙伴可以下载学习参考。 本书目录如下: 第1章 微信生态 1.1 微信:...
  • 本资源是《微信公众平台小程序开发 从零搭建套系统》高清PDF扫描版。该书由张剑明著,中国工信出版集团和人民邮电出版社联合出版,有需要的小伙伴可以下载学习参考。 本书目录如下: 第1章 微信生态 1.1 微信:...
  • (一)微信公众号开发之vs远程调试   (二) 微信公众号开发之基础梳理   (三) 微信公众号开发之自动消息回复和自定义菜单   (四) 微信公众号开发之网页授权获取用户基本信息   (五)微信公众号...
  • 开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速...
  • GitChat 作者:极笔北客原文:为微信开发填坑:微信网页支付的开发流程及填坑技巧关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 【不要错过文末彩蛋】 小程序作为微信之父张小龙钦点,并多次公开为之宣传...
  • 对于刚开始接触第三方平台开发的人员来说,微信开发平台的文档相对比较复杂,现阶段网上博客文章较为杂乱零散,无法提供有效的指导。 通过本达人课的学习,读者将熟悉第三方平台中的授权流程、Token管理、相关功能的...
  • 微信同时提供多种事件推送,帮助品牌所有者实现精准运营、数据分析等能力。 扫一扫接口主要调用流程如下:    权限获取 扫一扫功能申请只能在公众平台上完成,功能申请开通后将直接获得接口权限权限包括...
1 2 3 4 5 ... 20
收藏数 13,631
精华内容 5,452