小程序之 微信登录

参考网址
http://caibaojian.com/wx-getuserinfo.html
https://www.cnblogs.com/xiaohuizhang/p/9072236.html

刚刚接触小程序,记录一下

页面

  <view class="grid"> 
    <button class="btn phonelogin" bindtap="getstorg" data-statu="open">微信号快速登录
    </button>
  </view> 

js

Page({
  data: {
    isLogin:false,
    user_info:[],
    showModalStatus:false
  },
  onLoad: function (options) {

  },
  onShow:function(){
    var user_info = wx.getStorageSync('user_info')
    if (user_info == '') {
      // console.log(1)
    } else {
      this.setData({
        user_info: user_info,
        isLogin:true
      })
    }
  },


 // 微信登录
getstorg:function(){
var that = this

wx.login({
  success: res => {
    console.log('微信登录');
    // console.log(res.code);
    wx.request({
      url: 'https://...www/XccCheck/getCodeAccessToken',
      data: {
        'code': res.code
      },
      method: 'GET',
      header: {
        'content-type': 'application/json'
      }, // 设置请求的 header
      success: function (res) {
        console.log('请求code');
        console.log(res.data.status);
        if (res.data.status == 1) {
          wx.setStorageSync('user_info', res.data.info)
          // 登录成功之后更改状态
          that.setData({
            showModalStatus: false,
            isLogin: true,
            user_info: res.data.info,
          })
        }
      },
      fail: function (err) {
        console.log(err);
      }
    })
  }
}) 
},

控制器

public function getCodeAccessToken(){
    
    $code = $_GET['code'];
    $appid = self::$appid;
    $secret = self::$secret;
    $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='. $appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';

    // 报错 40029 配置信息错误 报错 40163 信息已被使用
    // 产生40029错误,是因为获取code的那一步跳转出问题,code已经过期,再传到下一步,当然提示code无效啦! 

    $result = $this->curl_get($url);      // 两种方法都返回 
    
    // session(['sessionKey'=>$res,'expire'=>7200]);
    $ss_model = M('Sessionkey');
    $session_key = $result['session_key'];
    $openid = $result['openid'];
    $str = $session_key.$openid;
    $info = array(
        'sessionkey'=>$session_key,
        'openid'=>$openid,
        'return_session'=>$str
        );

    //  添加进 red_sessionkey 表 而 :Column 'sessionkey' cannot be null
    $result = $ss_model->add($info);
    if($result){
        $arr = array(
            'msg'=>'session_key保存成功',
            'status'=>1,
            'session_id'=>$result
            );
        $this->ajaxReturn($arr,'JSON');
    }
}

// 请求接口调用的方法,传入url参数即可
public function curl_get($url)
{
    $info = curl_init();
    curl_setopt($info,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($info,CURLOPT_HEADER,0);
    curl_setopt($info,CURLOPT_NOBODY,0);
    curl_setopt($info,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($info,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($info,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($info,CURLOPT_URL,$url);
    $output = curl_exec($info);
    curl_close($info);
    return $output;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值