微信公众号开发踩坑指南(1)——服务器验证与Token获取失败原因
最近在做公司的微信公众号开发,微信官方的wiki写的也不是很详细,一不小心就入了一个坑。一开始入手的时候觉得有点混乱,开发完成之后发现其实不难,很多功能都是获取access token然后到微信指定的URL去换取你需要的东西,比如自定义菜单,带参二维码,模板消息等等。此文记录一下开发过程中遇到的坑,希望有缘看到这篇文章的人可以少踩些坑。
微信开发首先要进行服务器接口的验证,微信要确定填写的域名是你自己的服务器地址,所以这个部分只需要把微信服务器发给你的str返回就可以验证成功了。
这里我用的是公司的服务器地址,个人开发的话买个云服务器就可以了。AESKey随机,加密模式默认明文模式,Token自己随便设置即可。
根据上述的验证方法:
private function checkSignature()
{_GET["signature"];_GET["timestamp"];_GET["nonce"];tmpArr = array(timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );if( signature ){
return true;
}else{
return false;
}
}public function valid(){$echoStr = $_GET["echostr"];if($this->checkSignature()){echo $echoStr;exit;}}
controller中的handler_reques()函数直接调用valid函数即可完成验证。
坑1:这个验证的过程中是不能用浏览器打开URL的,不然会验证失败,这个坑了我好久。(为什么呢?我也不知道)
完成服务器接口验证之后,就可以用这个服务器URL去获取access_token了。
public function gettoken(){$mem = new Memcache;$mem->connect('127.0.0.1', 11211); //本地memcache$appid = APPID;$secret= SECRET;$getTokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;$accessTokenJson=file_get_contents($getTokenUrl);$accessTokenArr=json_decode($accessTokenJson,true);$accessToken=$accessTokenArr['access_token'];$mem->set('businesskfs_wx_access_token',$accessToken,0,6000);return $accessToken;}public function Token(){$mem = new Memcache;$mem->connect('127.0.0.1', 11211);$res = $mem->get('access_token');if(empty($res)){$res = $this->gettoken();}return $res;}
坑2:Access_token会2小时过期一次,每天有限制次数,所以不能一直请求获取。这里把获取的access_token存在memcache中,设置过期时间为6000(小于7200即可)。
坑3:有时候会显示token missing40001报错,这个时候有两种可能:
1,IP白名单没添加(基本上是这种)
2,重置一下secretID
拿到access_token后就可以调用微信接口去实现自己想要的功能啦。
微信公众号开发踩坑指南(1)——服务器验证与Token获取失败原因相关推荐
- 微信公众号开发踩坑指南(3)——公众号返回超链接点击跳转并自动关闭
前段时间产品提了一个听起来很奇葩的需求,其实做起来也感觉很奇葩. 公众号在触发某些事件后,返回给用户具体的文案回复,但这个文案回复需要带超链接的,在用户点击超链接之后做一些CURD操作并改变改用户的状 ...
- 微信vue路由跳转兼容_Vue微信公众号开发踩坑记录
需求 微信授权登录(基于公众号的登录方案) 接入JS-SDK实现图片上传,分享等功能 现状及难点 采用的Vue框架,前后端分离模式(vue工程仅作为客户端),用户通过域名访问的是客户端,但是微信授权中 ...
- vue在微信里面的兼容问题_详解Vue微信公众号开发踩坑全记录
本文介绍了Vue微信公众号开发踩坑全记录,分享给大家,也给自己留个笔记. 需求 微信授权登录(基于公众号的登录方案) 接入JS-SDK实现图片上传,分享等功能 现状及难点 采用的Vue框架,前后端分 ...
- 微信公众号开发---踩坑日记
现在开始学习微信公众号开发,所以会记录我在这个过程中遇到的坑点和新手对于微信文档理解不清的问题. 1.微信上面的操作都是采用接口的形式开发 在这里面难免会对微信开发存在不理解,因为公众号开发的具体修改 ...
- 微信公众号开发小记(二)--服务器验证
这篇是微信公众号开发小记的第二篇,承接上一篇,此次将完成如下主要功能 对接微信服务器和自己的服务器 需要的"材料" 到这里需要梳理一下都需要什么东西,以便在整个编码的过程中方便我们 ...
- 微信公众号服务器配置但没有回调,微信公众号 “服务器配置” 踩坑记
前言 今天工作的时候,碰到一个极其无语的关于微信公众号的坑,为此,我语言攻击了腾讯的机器人客服.然而并没有卵用...万万没想到,我还是解决了这个问题,并记录下踩坑经历,希望能帮到一些朋友吧. 背景 今 ...
- 微信公众号开发小坑:确认访问的微信是否为已关注公众号,秘钥使用全局access_token不能使用局部变量access_token
环境说明: 1.项目功能:年会抽奖活动开发,子功能:获取客户的相对公众号的唯一oppenid,然后确认是否关注本公众号,关注则获取客户信息后发抽奖券保存,否则先关注微信公众号: 2.java环境:SS ...
- 【微信公众号】微信公众号开发——Werobot入门指南
本文目录 文章目录 Werobot简介 申请公众号 获取开发者ID 服务器部署 验证服务器有效性 实验效果 补充 Werobot简介 Werobot项目地址(作者:whtsky):链接 WeRoBot ...
- prepay id为空php,微信公众号支付踩坑笔记
微信公众号支付,简单说主要分为如下几个步骤. 1.openId的获取 openId是微信用户与特定公众号对应关系的记录. 1.1设置回调域名 官方解释:用户在网页授权页同意授权给公众号后,微信会将授权 ...
- (微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆)http://blog.csdn.net/liaohaojian/article/details/70175835
从接触公众号到现在,通过不断积累学习,对如何调用微信提供接口有了一定的见解.当然在开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事,必先利其器,先看看开 ...
最新文章
- 写单元测试应该注意什么
- java塞班手机最大闪存rom_揭秘:为什么手机ROM最大只有256GB?
- Android Studio通过JNI调用NDK程序
- iOS开发之时间格式的转化
- 音视频技术开发周刊 | 173
- 事物 @Transactional
- 配置msf连接postgresql数据库
- 第五章 Windows基础控件
- iphonex黑屏开不了机_iphonexr死机,iphonexr开不了机
- java搜寻范围在哪设定_查找值在Java中的范围
- 【VS2010学习笔记】【异常处理】二(VS2008/VS2010中MFC“资源被另一个编辑器打开”)
- EXCEL同一个界面下打开两个表格比较
- 虚拟机 无法 ftp服务器系统,访问不到虚拟机上的ftp服务器上
- bootstrap FileInput多文件上传插件使用详解(包括Java代码)
- c语言标准差函数std,std函数
- unapp Error: Unbalanced delimiter found in string
- matlab中怎么正弦计算,matlab计算结果中的正弦余弦问题
- AutoCAD WS for iPhone, iPod toch, and iPad
- matlab 浮雕算法,photoshop图像滤镜——浮雕算法(含matlab代码)
- 导出excel工具类