这些日子在研究和开发微信产品,大部分官网提供的文档我个人感觉还是比较详实的,但是对错误的解决办法提供的手段并不多,作为第一次接受小程序开发的我,在开始阶段就遇到了一个比较初级的问题:调用小程序登陆API时能返回code,但是用code换取session_key和OPENid时总是提示【40029】错误代码,微信官网给的答案是code失效,而我从网络上找到的资料说是code被二次调用了,我检查了代码,并没有二次调用?
上代码:【app.js】
wx.login({
success: function (res){
if(res.code){
console.log(res.code)//显示一下获取的code
if(res.code){
wx.request({
url: 'https://www.xxxxx.com/wx/request_code.php',//我的服务器文件
data:{
code:res.code
}
success: function (re) {
console.log(re.data)
},
fail:function(){
console.log('shiban')
}
})
}
}else{
console.log('获取用户登录态失败!' + res.errMsg)
}
}
我自己服务器上的文件【request_code.php】
$APPID='XXXXXXXX';
$AppSecret="xxxxxxxxxxxxxxxxxxxxx";
$code=$_REQUEST['code'];
$request_https="
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
"
//获取session_key和openid的接口地址
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$request_https);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$output=curl_exec($ch);
curl_close($ch);
$jsoninfo=$output;
//提交到接口的代码
这样返回就是40029错误,后台无意中我将appid和secret的值直接写在下面的接口地址里,竟然神奇的起作用了,换回了session_key和openid:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
这个小问题困扰了我两三天,终于解决了。现在贴出来希望对小程序开发过程中遇到同样问题的你有帮助
?>