validate([ 'auth_token' => 'required|string|size:64', ]); $authTokenData = $this->tokenService->validateAuthToken($validated['auth_token']); if (!$authTokenData) { return $this->error( ErrorCode::TOKEN_INVALID, '認證令牌無效。' ); } if (now()->isAfter($authTokenData['expires_at'])) { return $this->error( ErrorCode::TOKEN_EXPIRED, '認證令牌已過期,請重新獲取。' ); } $result = $this->tokenService->generateAccessToken($authTokenData); return $this->success([ 'access_token' => $result['access_token'], 'expires_in' => $result['expires_in'], 'token_type' => $result['token_type'], ]); } catch (ValidationException $e) { return $this->error( ErrorCode::VALIDATION_ERROR, ErrorCode::getMessage(ErrorCode::VALIDATION_ERROR), $e->errors() ); } catch (\Exception $e) { Log::error('Error generating access token', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); return $this->error( ErrorCode::SERVER_ERROR, ErrorCode::getMessage(ErrorCode::SERVER_ERROR) ); } } }