微信小程序> 微信小程序微信授权登录微信登录

微信小程序微信授权登录微信登录

浏览量:2281 时间: 来源:weishine_xk

一、调用接口获取临时登录凭证(code)

wx.login({  success(res) {    if (res.code) {// res.code => 登录凭证    } else {      console.log('登录失败!' + res.errMsg)    }  }})

二、调用 code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key

本接口应在后端服务器调用

  • 请求地址
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
  • 请求参数
属性类型默认值必填说明
appidstring小程序appid
secretstring小程序appSecret
js_codestring登录时获取的code
grant_typestring授权类型,此处只需要填写 authorization_code
  • 返回值
属性类型说明
openidstring用户唯一标识
session_keystring会话密钥
unionidstring用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回
errcodenumber错误码
errmsgstring错误信息
  • 后台接口代码(PHP)
public function actionWechatLogin()    {    // 获取传参中的code        $code = $this->checkIsGet()->get('code');// 调用微信接口获取openid        $openid = $this->getOpenId($code);// 根据openid去数据库中查询用户信息,能查到数据继续下面的操作,未查到 提示未绑定微信登录        //重置token        // 1. 生成token        $authKey = md5(md5(time() . uniqid() . mt_rand(0, 999)));        // 2. 生成的token保存到 mysql数据库                // 3. 生成的token保存到 redis (键:token的值,value:用户信息)// 返回        Output::output(true, '0', '成功', ['openid' => $openid, 'token' => $authKey]);    }private function getOpenId($code)    {    // 这里的appid、secret、 grant_type  需要替换成你自己的        $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.Yii::$app->params['mini_program']['AppID'] . '&secret='.Yii::$app->params['mini_program']['AppSecret'].'&js_code='.$code.'&grant_type=authorization_code';        $ch = curl_init();        $options = array(            CURLOPT_URL => $url,            CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0",            CURLOPT_RETURNTRANSFER => 1,            CURLOPT_HTTPHEADER => array("Content-Type: application/json-rpc")        );        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_HEADER, 0);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查        $html = curl_exec($ch);        $info = curl_getinfo($ch);        curl_close($ch);        $resData = json_decode($html);        Yii::error($html);        if (!isset($resData->openid)) {            Output::output(false, '1', '获取openid出错。', null);        }        Yii::error('openid == ' . $resData->openid);        return $resData->openid;    }

调用后台接口获取token

  • 小程序端记录token到本地
wx.setStorageSync('token', token)
  • 调用接口时,取出token传到后台
wx.getStorageSync('token')

*注意

  1. 临时登录凭证 code 只能使用一次
  2. 用户登录凭证(有效期五分钟)

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎