微信小程序授权登录
小程序js书写
 /**
   * 授权登录点击事件
   */
getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        let nickname=res.userInfo.nickName
        let img = res.userInfo.avatarUrl
        wx.login({
          success:(res)=>{
            // 向后端发送网络请求 获取openid
            wx.request({
              url: 'http://www.exercise.com/login.php/login',
              data:{
                code:res.code,
                nickname:nickname,
                img:img
              },
              success:(e)=>{
                console.log(e)
                // 将用户昵称 用户头像 openid放入缓存
                wx.setStorageSync('nickname', e.data.nickName)
                wx.setStorageSync('img', e.data.img)
                wx.setStorageSync('openid', e.data.openid)
                wx.switchTab({
                  url: '/pages/my/my',
                })
              }
            })
          }
        })
        console.log(res)
      }
    })
  },后端控制器层书写
    /**
     * 微信授权登录
     * @param Request $request
     * @return \think\response\Json
     */
    public function login(Request $request)
    {
        // 接收小程序登录code值
        $code=$request->get('code');
        // 登录用户昵称
        $nickname=$request->get('nickname');
        // 登录用户头像
        $img=$request->get('img');
        
        // 不想封装  直接$url=官方网址
        // 拼接请求微信官方网址
        $url = sprintf(config('url.url'),$code);
        // 向微信官方请求openid
        $result=getUrl($url);
        $openid=$result['openid'];
        $session_key=$result['session_key'];
        // 组装入库信息
        $data=LoginBusiness::userInfo($nickname,$openid,$img,$session_key);
        // 判断是否第一次登录
        LoginBusiness::login($openid,$data);
        return json($data);
    }在应用公共文件common.php中封装getUr向微信官方请求openid方法
//curl封装
if (!function_exists('geturl')){
    function geturl($url){
        $headerArray =array("Content-type:application/json;","Accept:application/json");
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);
        $output = curl_exec($ch);
        curl_close($ch);
        $output = json_decode($output,true);
        return $output;
    }
}business逻辑层
<?php
namespace app\login\business;
use app\login\model\Login;
class LoginBusiness
{
    public static function userInfo($nickname,$openid,$img,$session_key){
        $data=[
            'nickName'=>$nickname,
            'openid'=>$openid,
            'img'=>$img,
            'session_key'=>$session_key
        ];
        return $data;
    }
    public static function login($openid,$data){
        $info=Login::getUserInfo($openid);
        if (!$info){
            // 用户信息入库
            Login::addUserInfo($data);
        }
        Login::updateUserInfo($data);
    }
    public static function sms($code,$sms){
        if (empty($code)){
            return '请先发送验证码';
        }
        if ($sms!=$code){
            return '验证码不正确';
        }
    }
} 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号