微信开发之调用扫一扫接口
来源:互联网 发布:python 分词 编辑:程序博客网 时间:2024/05/22 12:39
前言
这是自己第一次进行微信开发,自己之前一直以为很简单,但是自己真正来做的时候才发现会遇到很多问题。认识的一个小伙伴进行微信开发已经挺久了,如果需要可以直接问他或者将他的源代码拿过来。但是想想这个项目并不是很赶时间,因为做的算是一个公益项目,负责人对自己也很好。所以自己就憋着不去问别人,自己独立完成。折腾了一番以后,发现了很多坑,在点击按钮,弹出扫一扫界面的那一刹那,什么感觉呢?程序猿都懂的。
调用扫一扫接口遇到的那些坑
1、太过于相信官方的东西
太过于相信官方的东西(这里没有黑腾讯的意思),调用接口如果想要一个demo的话,大家都会下载官方的demo,demo里面说的很清楚
JAVA, Node, Python 部分代码只实现了签名算法,需要开发者传入 jsapi_ticket 和 url ,其中 jsapi_ticket 需要通过 http://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=ACCESS_TOKEN 接口获取,url 为调用页面的完整 url 。PHP 部分代码包括了获取 access_token 和 jsapi_ticket 的操作,只需传入 appid 和 appsecret 即可,但要注意如果已有其他业务需要使用 access_token 的话,应修改获取 access_token 部分代码从全局缓存中获取,防止重复获取 access_token ,超过调用频率。注意事项:1. jsapi_ticket 的有效期为 7200 秒,开发者必须全局缓存 jsapi_ticket ,防止超过调用频率。
这里说的是php部分代码只需要传入appid,appsecret即可,但是我们真的这样传入的时候是不行的。因为自己接触服务器不久,就还没有看错误日志的习惯,不过现在我发现这个真的是太重要了。错误日志一定要看,一定要看,一定要看。打开错误日志,我们看看错误日志的内容
PHP Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in /var/www/html/wx/jssdk.php on line 95
这是什么情况?额,原来是curl_setopt中的第三个参数并不是传入true,现在是应该传入2。当然不同的php版本我也不清楚,还希望看到的大佬能够指教。如果你的服务器的错误日志出现这个错误,那么就需要修改。
2、invalid signature
如果微信开发没有遇到这个问题,那就是不完整的人生,哈哈。网上遇到这个问题的人一大堆,解决的方法也是各种各样,我这里只是总结一下我解决的方法。还是从错误日志出发
PHP Notice: Undefined property: stdClass::$access_token
这里的主要原因是json_decode函数的问题,官方文档是这样的
$res = json_decode($this->httpGet($url));
但是可以运行的是这样的,既然这里这样修改了,那么后面获取也不能通过->获取,而是通过[]获取。
$res = json_decode($this->httpGet($url),true);
总结
虽然短短几句话就把自己遇到的坑说完了,但是解决过程却不是那么简单,不过每遇到这样一个问题,也就更加进步一点点。主要的收获首先就是看错误日志。根绝错误日志来寻找答案,会快很多。另外就是不要过分相信权威,因为版本或者其他问题,有些地方总是会不兼容。
- 微信开发之调用扫一扫接口
- 微信开发之——接口调用频率xianzh
- 微信企业号开发之access_token接口调用示例
- 微信开发(调用各种接口)
- 微信开发接口封装调用
- 微信接口调用
- 微信接口调用
- 微信开发之小黄鸡接口调用(免费版)智能回复
- 微信开发之——接口调用凭证access token
- 微信企业号开发之网页授权接口调用示例
- 微信开发之群发接口
- 微信开发之发送消息接口
- Andriod 开发之微信分享接口
- 微信开发之JSSDK调用
- java 微信开发,各种接口调用,精心收集
- 微信开发二 获取接口调用凭据
- php 微信公众号开发 api接口调用
- 微信接口开发
- 我的学习记录52
- 做好这5点,你一定能在编程的道路上有所成就
- JAVA基础(二)
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 8.6 Random 类
- 微信开发之调用扫一扫接口
- 数据结构-单链表_c++
- Idea--Tomcate配置中的On Upate Action 与 On Frame Deactivation
- 数论-扩展欧几里得算法
- 判定系数推导 — Coefficient of Determination Derivation
- 海康、华为、中兴、联影...找工作记录
- Java循环结构
- OpenCV--提取水平与垂直线(形态学操作应用)
- mysql账户管理