文档章节

1分钟了解微信公众号API的套路

lilugirl
 lilugirl
发布于 2017/05/31 11:49
字数 533
阅读 1699
收藏 38

微信公众号家族的API的规划思路是从 “公” 和 “私”两个角度划分的。导致代码也基本按照这个套路。

1 对公API是针对网站本身的API  走/cig-bin/目录 例如 微信公众菜单  ,用户消息,JSSDK 页面分享,地图服务等

2 对私API 针对网站用户的API 走/connect/ 或者/sns/目录的 例如 微信用户信息授权,微信支付等 。

诡异的是这两条线都有access_token的概念 ,所以很多初次接触微信API的人常常傻傻分不清楚 。 

简单的说对私API的access_token是跟用户的客户端走的,不同的用户 不同的IP access_token在同一时间是不同的。

而对公的API的access_token可以在两小时内保持一样,无论客户端是谁都是同一个access_token.

 

为了解释方便 我们給两种access_token分别命名为  G access_token 和 P accss_token  简称G 和P

我们可以通过P的方式获取用户的openid存入数据库 或者其他什么地方。

P+openid 可以获取用户信息 通过请求/sns/userinfo

G+openid 也可以获取用户信息  通过/bin-cig/user/info

测下来这两种获取用户数据的方法 第G+openid更靠谱和准确,比如用户客户端语言的获取是正确的。而P+openid获取的用户信息的语言貌似总是中文。

所以微信API的几条产品线我们可以这么区分:

1 针对网站或者公众号本身的有JSSDK, 微信公众号菜单,用户消息等

2 针对用户个人有微信授权,微信支付等

值得回味的是 公众号消息发送是G 针对某个用户发送消息的openid是被动的从用户回复消息里获取的。

由于多条G的产品线使用的access_token是一样的,那么这多条产品线的代码最好能共享access_token否则可能会造成access_token频繁失效 甚至报错。

 

 

© 著作权归作者所有

共有 人打赏支持
lilugirl
粉丝 94
博文 391
码字总数 107953
作品 0
杨浦
程序员
私信 提问
加载中

评论(8)

lilugirl
lilugirl

引用来自“开源中国首席大弟子”的评论

这波广告 我服
😵
百度得来终觉浅
百度得来终觉浅
我是不会去健身的
开源中国首席大弟子
开源中国首席大弟子
这波广告 我服
开源中国小卖部部长
开源中国小卖部部长
有打广告嫌疑
吴佩在
吴佩在
66
lilugirl
lilugirl

引用来自“Bbblack”的评论

写的字真丑
😂
Bbblack
Bbblack
写的字真丑
lyhuilin
lyhuilin
赞\(≧▽≦)/
微信支付WxPayException参数错误 return_code:Fail return_msg:time_expire时间过短

有个微信网站之前下单支付一直都正常,网站没做任何修改但最近在提交订单是总是弹出“参数错误”,在使用“微信支付样例”的jsApiPay进行测试时出现以下错误: return_code:Fail return_msg:...

沉默刺客
2015/10/20
5.2K
4
10步搞定微信支付的扫码支付

先要有微信公众号,从公众号左侧菜单进入微信支付,要先申请微信支付,申请通过之后,即可使用,涉及到2个后台:公众号后台和支付平台后台 首先要得到AppID(应用ID)和AppSecret(应用密钥),获...

爬墙
2016/01/23
2.7K
2
WeRec:首届游戏行业全民解说大赛开幕!参与就送定向红包!

由WeRec与《突击军团》共同举办的游戏行业全民解说联赛正式开幕了!本次活动我们精心为游戏行业的小伙伴准备了数十万媒体资源礼包以及运营奖金,同时为了鼓励所有参与者,WeRec对所有成功参加...

werec
2015/04/10
127
0
如何做好微信公众号的日常运营?

     微信运营,日常必做那些事情呢?每一个微信公众号的运营者都是一名产品经理,我们每天阅读后台的统计数据,每日新增人数,文章阅读人数,转发次数等。下面就让小编来介绍一下微信公众...

公众开发运营官网
2017/12/06
0
0
微信公众号支付【Java版】

微信公众号支付【Java版】 说明: ① 本文主要讲解的是微信公众号内(商城)支付部分,如需了解其他微信公众号开发内容,请访问:http://blog.csdn.net/lyq8479/article/details/8944988 【柳...

大兵瑞恩
2016/05/31
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

Integer使用双等号比较会发生什么

话不多说,根据以下程序运行,打印的结果为什么不同? Integer a = 100;Integer b = 100;System.out.println(a == b);//print : trueInteger a = 200;Integer b = 200;System.out.pr...

兜兜毛毛
20分钟前
0
0
CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
31分钟前
1
0
I2C EEPROM驱动实例分析

上篇分析了Linux Kernel中的I2C驱动框架,本篇举一个具体的I2C设备驱动(eeprom)来对I2C设备驱动有个实际的认识。 s3c24xx系列集成了一个基于I2C的eeprom设备at24cxx系列。at24cxx系列芯片包...

yepanl
33分钟前
2
0
设计模式之工厂模式

本篇博文主要翻译这篇文章: https://www.journaldev.com/1392/factory-design-pattern-in-java 由于翻译水平有限,自认为许多地方翻译不恰当,欢迎各位给出宝贵的建议,建议大家去阅读原文。...

firepation
今天
5
0

中国龙-扬科
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部