validate([ 'code' => 'required', ], [ 'code.required' => '授权码必填', ]); //绑定OPenid $code = $request->input('code'); $app = \EasyWeChat::miniProgram(); $result = $app->auth->session($code); if (data_get($result, 'errcode')) { return $this->error(data_get($result, 'errmsg')); } if ($openid = data_get($result, 'openid')) { $session_key = data_get($result, 'session_key'); //判断是否已绑定对应用户 $user = User::where(['mini_openid'=>$openid])->first(); //写入缓存 Cache::put($openid, $session_key, 48*60*60); if(!$user){ //写入新用户 $user = new User(); $user->mini_openid = $openid; $user->save(); //写入用户抽奖记录 $activity_user = new ActivityUser(); $activity_user->user_id = $user->id; $activity_user->save(); } return $this->attemptUser($user, $request); } return $this->error('授权失败'); } public function refreshToken(Request $request){ try { $token = auth('api')->refresh(); }catch (\Throwable $th) { // $this->message = $th->getMessage(); return $this->error('刷新错误,请稍后再试'); } return $this->success([ 'api_token'=> $token, 'expire_in'=> Carbon::parse()->addSeconds(auth('api')->factory()->getTTL() * 60)->toDateTimeString() ]); } protected function attemptUser(User $user, Request $request) { $token = auth('api')->login($user); // if (!$user->api_token) { // $user->api_token = Str::random(32); // } // $user->api_token = $token; $data = UserResource::make($user); $data->offsetSet('api_token', $token); return $data; } }