文档章节

第三方平台授权流程

CurtainRight
 CurtainRight
发布于 2016/05/21 20:32
字数 1360
阅读 685
收藏 0
点赞 2
评论 0

微信第三方平台作用:

 首先要知道为什么要用公众号第三方平台,公众号第三方平台的开放,是为了让公众号运营者,在面向垂直行业需求时,可以一键登录授权给第三方的公众号运营平台,通过第三方开发者提供的公众号第三方平台来完成相关业务。简单来说就是不懂技术的小白用户一键授权给第三方公司代理开放的权限如发送消息等,不用填写一些繁琐的Appid,AppSecret,URL,Token等信息。

需求:

也许很多人会跟我一样,有公众号平台,为什么还需要第三方平台。

1、授权简单,不需要负责的手动绑定

2、虽说第三方平台最终也是走的公众平台的接口。但是比如你用的是别的公司的公众号做的微信功能(菜单,素材等等),但是消息接口没做。那么再用第三方平台直接托管那个公众号,去实现他的消息接口。

1、授权流程官方文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1453779503&token=&lang=zh_CN(建议一定要看完,否则会走很多弯路)

2、全网审核官方文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318611&token=b0e30bf2053a4f9db22f01583b381187ea32dfed&lang=zh_CN(这里如果你自己写代码,必须要看。如果直接Copy代码可以不用看

3、创建第三方平台中需要注意的几点:

3.1、第三方平台有自己的appId、appSecret,与微信公众号的没有任何关系

3.2、把公众号的权限分配给第三方。

注意:如果你的公众号没有某个功能,分配了也没有任何意义。

2.3、这是你需要填写的相关回调信息。。。

常见错误:

1、在授权URL测试的时候,如果报AesException: 签名验证错误,可能是代码你参数填写有错。一定要注意是填写第三方平台的信息,不是公众号的信息。

2、在授权URL测试的时候,如果报Illegal key size,那么就是指密钥长度是受限制的,java运行时环境读到的是受限的policy文件。去掉这种限制需要下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files(https://yunpan.cn/cSrtk3Fk6WgAs  访问密码 244a)。替换${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar(jdk,jre最好都替换。)。注意一定要重启TOMCAT才能生效

3、component ticket is exprie ticket过期,每10分钟会微信服务器会推送到授权事件的URL中。这里可以不用处理设置过期时间(因为这里的ticket是无接口调用权限的,而且是微信服务器自己推送的

4、注意公众号消息处理的URL必须加上$APPID$

5、component_access_token过期时间为2个小时,和公众号的Token一样(我处理的是存储过期时间,超过就请求。而不是定时刷新)

6、可以选择你自己需要第三方托管的权限集,比如你其他消息只走微信公众号,只有客服消息走第三方平台。

7、异常:请确认授权入口页所在域名,与授权后回调页所在域名相同,并且,此两者都必须与申请第三方平台时填写的授权发起页域名相同。授权入口页所在域名:空

(怀疑是域名问题,因为新建了一个第三方,没有全网发布前没有任何问题。)

8、有可能会出现你每次启动项目的时候,由于每10分钟才会验证一次Ticket,那么直接调用接口,如果服务器还没推送,会出现ticket失效(不过在正式环境还好)(就算全网通过后也会推送component_verify_ticket协议)。

9、每次授权后,想要获取最新的权限必须重新扫码授权。否则无法获取最新的消息。

10、获取令牌的官网接口

11、第三方中的授权的URL一级接收公众号消息的URL都只能在同一个一级域名下

12、如果是并发量大,做集群的话,一定要把所有服务器的ip都加到白名单中

特别注意:

全网审核需要有耐心,我不知道是我的网不好(我用的花生壳),还是微信服务器有问题,因为每次我后台没有报错,微信说最长审核5分钟,大师每次5分钟都还没到,就终止了。导致总有一到两个审核无法通过。

接收推送ticket的时间(不知道是网络原因,反正有的时候不是10分推一次)

如果在确保代码没问题,而且网路也没有问题的情况下。可以加上返回“”或者success

源码下载:

https://yunpan.cn/cSMGaANQTx82r  访问密码 9b37

源码还有待优化,以及只给了源码的包,其余相关配置需要自己搞。

第三方平台接口的坑:

实际的返回信息

{"authorizer_info":{"nick_name":"Curtain的程序猿之路","head_img":"URL","service_type_info":{"id":1},"verify_type_info":{"id":-1},"user_name":"wechatId","alias":"xi199321Curtain","qrcode_url":"URL","business_info":{"open_pay":0,"open_shake":0,"open_scan":0,"open_card":0,"open_store":1},"idc":1},"authorization_info":{"authorizer_appid":"appId","func_info":[{"funcscope_category":{"id":1}},{"funcscope_category":{"id":2}}]}}

 

© 著作权归作者所有

共有 人打赏支持
CurtainRight
粉丝 6
博文 172
码字总数 61177
作品 0
武汉
程序员
01第三方平台概述

第三方平台概述 一、概述 公众平台第三方平台是为了让公众号或小程序运营者,在面向垂直行业需求时,可以一键授权给第三方平台(并且可以同时授权给多家第三方),通过第三方平台来完成业务,...

MadDragon
03/12
0
0
微信公众号第三方平台授权流程

微信公众号第三方平台授权流程 获取授权码流程: 拿到componentverifyticket-> 获取componentaccesstoken-> 获取preauthcode-> 引导用户进入授权页-> 用户同意授权给第三方平台-> 拿到授权码...

Gen_zhou
2016/04/21
1K
0
搭建基于OAuth2和SSO的开放平台

原创文章,转载或摘录请说明文章来源,谢谢! http://heartlifes.com/%E6%90%AD%E5%BB%BA%E5%9F%BA%E4%BA%8Eoauth2%E5%92%8Csso%E7%9A%84%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0/ 原创文章,转......

吕伯文
06/22
0
0
腾讯微博OAuth2.0认证介绍

目录 1 腾讯微博OAuth2.0认证介绍 2 获取accesstoken的两种方式 2.1 1.Authorization code grant 2.2 2.Implicit grant 3 刷新accesstoken 4 访问API资源 4.1 请求方法 4.2 请求参数(公共部...

jxlgzwh
2013/07/06
0
1
oauth 开放授权

本想前段时间就把自己通过QQ OAuth1.0、OAuth2.0协议进行验证而实现QQ登录的心得及Demo实例分享给大家,可一直很忙,今天抽点时间说下OAuth1.0协议原理,及讲解下QQ对于Oauth1.0的认证开发。...

bengozhong
2016/08/15
26
0
OAuth2 结合网站授权流程分析

第一步:组装 URL 请求获取授权码 code 1. 用户访问一个第三方 URL 网址,这时第三方服务端收到请求,组装 URL,随机生成 state 并存储(Cookies、Session、Mysql等),然后引导用户请求访问...

lixiaokai2008
2015/09/30
323
1
OAuth2学习笔记

目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题,OAuth就是干这个的,OAuth2是OAuth协议的下一个版本,相比OAu...

楠木楠
2016/12/13
213
0
OAuth的机制原理讲解及开发流程

本想前段时间就把自己通过QQ OAuth1.0、OAuth2.0协议进行验证而实现QQ登录的心得及Demo实例分享给大家,可一直很忙,今天抽点时间说下OAuth1.0协议原理,及讲解下QQ对于Oauth1.0的认证开发。...

只想一个人静一静
2014/04/26
0
0
iOS 基于第三方QQ授权登录

iOS 基于第三方QQ授权登录 基于iOS实现APP的第三方QQ登陆,接入第三方SDK时的一个基本的步骤: 1,找到相关的开放平台,QQ互联平台,http://connect.qq.com/; 2,注册成功后创建自己的APP,...

Youth_关旋
2016/08/27
114
0
OAuth 的权限问题与信息隐忧

核心提示:以 QQ 登陆和微博登陆为代表的“一键登陆”背后不仅仅是登陆这么简单,它还默认获取了你的其他隐私资料和账号的部分使用权限,我们在享受便利的同时一定不要忘记保护好我们的个人信...

tsl0922
2012/05/12
5.3K
10

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部