微信小程序登录并获取session_key和openID
温馨提示:这篇文章已超过751天没有更新,请注意相关的内容是否还可用!
微信小程序调用接口获取登录凭证(code)。然后通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。
相关代码:
WXML代码:
<view class="login" bindtap="login">{{text}}</view>
CSS代码:
.login{ width: 300rpx; height: 80rpx; margin: 30rpx auto; border-radius: 20rpx; background-color: #2c1eeec2; color: #ffffff; text-align: center; line-height: 80rpx; font-size: 30rpx; }
JS代码:
Component({ properties:{ text:{ type:String, value:"登录" } }, methods:{ login:function(){ wx.login({ success (res) { if (res.code) { //发起网络请求 wx.request({ url: 'https://xxx.xxxxx.com/index.php?login', //这里替换成自己的网址 method:'get', data: { code: res.code }, success:(res)=>{ console.log(res); } }) } else { console.log('登录失败!' + res.errMsg) } } }) } } });
PHP代码:
<?php $url = $_SERVER["REQUEST_URI"]; $request = explode("?",$url); $codeArray = explode("&",$request[1]); foreach($codeArray as $key=>$value){ $code[] = explode("=",$value)[$key]; } if($code[0] = "login"){ $appId = ""; //登录微信小程序后台在开发设置中获取 $secret = ""; //登录微信小程序后台在开发设置中获取 $grant_type = "authorization_code"; $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appId."&secret=".$secret."&js_code=".$code[1]."&grant_type=".$grant_type; $msg = getInfo($url,"get",$code[1]); return json_encode($msg); } function getInfo($url,$method,$codel){ $header = array("Content-type:application/json;", "Accept:application/json"); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output;
返回结果:
注意事项:
在PHP代码处理中返回数据时不要直接返回函数,要使用变量进行接收,否则无法获取信息,即
//错误写法 return getInfo($url,"get",$code[1]); //正确写法 $msg = getInfo($url,"get",$code[1]); return json_encode($msg);