1.先说下我遇到的问题吧,
1),总是给我报500的返回错误,以为是网站域名没备案的问题,结果发现并不是,只是开发工具中的账号信息对应不一致,我是专门找了一个域名备案加ssl证书配备好的服务器测试一直不成功。
2)大家只需要在本地配置好自己的本地环境,并把微信web开发工具中的 设置-》项目设置-》不验证https开启就可以了
3)你还可能会遇到这个问题:{"errcode":40163,"errmsg":"code been used, hints: [ req_id: pQyX602412029 ]"},这是因为code只能使用一次,在微信小程序文档中有介绍,大家完全不用去追究他,按照我下边的逻辑来即可。
微信小程序端代码
// 登录
wx.login({
success:
function
(res) {
if
(res.code) {
//发起网络请求
wx.request({
//这里的that.globalData.url指的是服务器端的路径,可以直接改成自己的服务器路径,
Wx_GetOpenidByCode指的是获取openid的方法名
url: that.globalData.url+
'Wx_GetOpenidByCode'
,
data: {
code: res.code
},
success:
function
(data){
//data即为返回的openid
console.log(data)
}
})
}
else
{
console.log(
'登录失败!'
+ res.errMsg)
}
}
});
tp5端的代码,非常简单,如下所示,需要注意的是
file_get_contents这个方法需要在php.ini文件中开启,相信做过开发的都知道,只需要去掉
php.ini文件中的;extension=php_openssl.dll前边的;即可.
//换取OpenId public function Wx_GetOpenidByCode(){ $code = $_REQUEST['code'];//获取code $appid =""; $secret = ""; $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code"; //通过code换取网页授权access_token $weixin = file_get_contents($url); $jsondecode = json_decode($weixin); //对JSON格式的字符串进行编码 $array = get_object_vars($jsondecode);//转换成数组 $openid = $array['openid'];//输出openid return $openid; }