微信小程序token失效 自动请求后端,适用于自动登录

app.js

// app.js
App({
  onLaunch() {
    let token = wx.getStorageSync('token')
    if (!token) {
      wx.login({
        success:ret=>{
          let code = ret.code
          wx.request({
            url: 'http://www.zy.com/api/wxlogin',
            method:"POST",
            data:{code},
            success:res=>{
              console.log(res.data);
              wx.setStorageSync('token', res.data.data)
            }
          })
        }
      })
    }
    

    
    }

  
})

laravel 路由:

//小程序静默登录
Route::post('wxlogin',[\App\Http\Controllers\LoginController::class,'wxLogin']);

 控制器代码:

 public function wxLogin(Request $request)
    {
        $code = $request->post('code');
        $appid = 'wxcb2b0041e40f2585';
        $appSecret= '913fd3ba36225deb6610ee389f439b29';
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$appSecret&js_code=$code&grant_type=authorization_code";
        $res = json_decode(file_get_contents($url), true);  //返回openid,session_key
        $getUserInfo = User::where('openid',$res['openid'])->first();
        if ($getUserInfo) {
            $userId = $getUserInfo->id;
        } else {
            $create['openid'] = $res['openid'];
            $create['session_key'] = $res['session_key'];
            $result = User::create($create);
            $userId = $result->id;
        }
        $token=JwtService::createToken($userId);
        return ['code'=>200,'msg'=>'ok','data'=>$token];
    }

 

posted @ 2022-03-07 21:46  王越666  阅读(824)  评论(0编辑  收藏  举报