由于最近业务需求客户让我们帮忙开发微信公号。于是登录了客户的公号 发现在他的公号设置里面已经写满了页面授权这些东西,因为这个公号的听说是找了很多开发公司帮他们开发,反正就是东一个西一个而且哪个都不能删。开发过的都知道页面授权域名这个东西最多只能填写两个(老版本的时候只能写一个。老马的手下已经大发慈悲的升级了一下能写两个了)但这个东西非常重要,多的也不解释了。dddd
这个需求到我手上的时候我也头疼半天。也找了很资料和解决方案。有的让我找他们开发过的公司让他们配合我做一个类似跳转的东西,让他们代我们授权然后回调到我的服务器上。我想想这个东西只能解一时之需,总不能每次出现个功能 我就找那些人。我不烦别人还嫌烦。于是我又找了一些资料。就看到了微信的开放平台里的第三方平台。
微信第三方平台 他的定义在我个人理解就是 我成为服务商帮我的客户服务,不需要进入客户的公号里进行设置,然后我可以代他开发,一些回调地址,授权页面域名都在我第三方平台里设置,把主要的东西掌握在自己的手上,直接脱离那个烦人的公号设置,就是上面那张图。现在世面上也有很多这些东西
类似于上面这种让公号授权给第三方一些权限,然后第三方带代为开发,当然也能正常的获取微信的各种权限(前提是对方已经授权给你了)
那就进入正题。
第一步:
首先我们当然就是先去注册一个微信开放平台的账号。
微信开放平台
注册这些东西 你就按它的提示来吧。准好300大洋。认证费~~
弄好提交了认证 一般一周内就会有认证公司给你电话的。如果你能说会道口才好的话,电话那头可能会成为你的另一半。程序员的交际圈也就这样了。
当你有一个账后 在管理中心->第三方平台->创建第三方平台进行按照他的提示就可以创建一个项目
创建完后,记得回到 管理中心->第三方平台 你创建的项目 操作详情里面进行操作
前期就大概就这一提交审核。 大概第二天就能知道是不是审核通过了 。审核不通过 会有提示为啥审核不通过,大部分原因是因为平台官方网址打不开。
第二步:
也是在项目详情里面 , 开发信息 这边是先让你选择 你需要的公众号或者小程序的的权限,点编辑按照你需要权限 初步设定一下。如果后期需要其他权限也是可以进行更改的。
step 2:
我一个个讲吧,微信提示有会把我们弄懵
这个东西他会每隔10分钟 会发一个请求到你服务器上,所以这里填写你能接受到微信请求的地址。可以先用内网穿透测试ngrok 花生壳 这些(我是自己搭建了一个ngrok,有兴趣的可以去翻一下我的ngrok搭建的文章),填好之后微信就会发送请求过来。(在审核中它也会发的)下面是微信请求的示例图
请求过来的都是XML 加上一些参数。
appid :是你第三方的项目的appid
Enctypt 是需要ase进行解密 解密出来有个component_verify_ticket 有效期是12个小时。自己做好维护。提前半小时进行更新。
概述 | 微信开放文档 加密解密的demo 在这个链接里可以去下载看一下。 我是用php的 微信的demo里的解密是比较老的。php7以上就开始不支持了。这可以去李彦宏那边搜一下 能搜到的 。
一些公号的事件 和 ticket 差不多也需要解密。这里面可以玩出一些花样 可以自行研究一下
消息校验TOKEN 消息加解密KEY 这些自行按规则填写
授权事件接收配置 、 消息与事件接收配置、授权发起页域名 、公众号开发域名 这几项要域名一致
这着重讲一下 公众号开发域名 这个东西。完全就是坑爹。他上面写着选填,但是你不填这个地址微信狗日的到最后用户进行访问的时候 就会出现redirect_uri 错误。这里的 公众号开发域名 就跟公号里的 网页授权域名 是同一个道理 你不填就不行,连访问都不访问不了,这里给你个选填。
也可能是我粗心看见选填就不填了。回头搞半天。
参数配置方面应该就讲完了
现在讲一下各种令牌 token 预授权码的获取
第一步:
这里就是那个ticket 如果看到了这里应该这步都是完成的。就是微信会主动推送加密的ticket 到你的 授权事件接收配置 的地址上 你要去解密
第二步:
获取令牌:和上面获取ticket差不多 令牌 | 微信开放文档 这里的这个文档是没坑的。照这里做。accounToken 有效期是2个小时 ,提前半个小时进行更新,自己做好维护
第三步:
获取预授权码:和上面两步差不多 预授权码 | 微信开放文档 这里注意一下,打箭头的这里也要一起改 改成获取的令牌就好了。就是post 和get 都要放令牌。自行维护。或者不需要维护,需要的时候就去请求拿一下。。
第四步 :
生成链接 链接会自动变换成二维码,拿这个二维码 去给公号的管理员进行扫码授权
授权流程技术说明 | 微信开放文档 可以参照这个文档写。
这里注意的是 一定要在 授权发起页域名 填写的地址里进行编写代码 而且一定要在页面里
写个a标签跳转过去。不能直接生成好复制过去打开 微信是不会认这样的操作 会报错的
例子:
手动点击跳转过去 会变成一个二维码。然后让需要授权的公号管理员进行扫码授权
讲到这里 总结一下:
首先需要 接收微信推送过来的Ticket 在 授权事件接收配置 这里的填写的地址 进行解密 然后自行维护,有效期12个小时
第二 获取令牌 主动去请求获取 自行维护 有效期 2个小时
第三 获取预授权码 然后生成链接 在页面中点开。
代公号发起授权
简介 | 微信开放文档 这里就和平常的 开发公号的东西差不多了。就是有些需要按照第三方平台的规则来,大致相同。
我的业务需求权限只有一些 获取账号这些。其他权限 各位可以在仔细对照一下文档。 这个东西我也研究了1天才弄出来。我是比较笨的人。相信各位都是聪明绝顶的比我厉害。这些是我的拙见,有什么写的不好的请包涵。