微信小程序登录并获取session_key和openID

2022-04-09 832阅读

温馨提示:这篇文章已超过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);