uniapp+php 微信小程序登录 获取openid

EN
EN
2023-06-01 / 0 评论 / 235 阅读 / 正在检测是否收录...

uniapp+php 微信小程序登录 获取openid

前端 uni.login(wx.login) 获取code
后端 jscode2session 验证code并获取openid

参考、非完整demo

uniapp代码:

const BASE_URL = "http://127.0.0.1/api/"; //接口地址
/**
 * 封装请求
 */
export const myRequest = (options)=>{
    return new Promise((resolve,rejecj)=>{
        uni.request({
            url:BASE_URL + options.url,
            method:options.method || 'GET',
            data:options.data || {},
            dataType:"json",
            header: {
                "Content-Type": "application/x-www-form-urlencoded",
            },
            success: (res) => {
                resolve(res)
            },
            fail: (err) => {
                uni.showToast({
                    title:'请求接口失败',
                    icon:"error"
                })
                rejecj(err)
            }
        })
    })
}


/**
 * 微信小程序登录并获取用户信息
 */
export const wxlogin = ()=>{
    return new Promise((resolve,rejecj)=>{
        uni.login({
          provider: 'weixin', //使用微信登录
          success: function (loginRes) {
              if(loginRes.code){
                  let data = {code:loginRes.code};
                  myRequest({
                      url:"api.php?act=getWxInfo",
                      data,
                      method:"POST"
                  }).then(res=>{
                      resolve(res)
                  }).catch(err=>{
                      rejecj(err)
                  });
              }
          },fail(err) {
              rejecj(err)
          }
        });
    })
}

php代码:
接收到code后获取openid

 /**
     * jscode2session
     * 通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程
     * https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html
     */
public function jscode2session($code = ""){
        $api = "https://api.weixin.qq.com/sns/jscode2session?appid={$this->appid}&secret={$this->secret}&js_code={$code}&grant_type=authorization_code";
        $reslut = file_get_contents($api);
        $reslut_arr = json_decode($reslut,true);
        if(!is_array($reslut_arr)){
            return ['errcode' => -9999,'errmsg' => $reslut];
        }
        return $reslut_arr;
}

ll0bx80z.png

0

评论 (0)

取消