input('state') ?? $request->jwtClaims['uid']; $state = $request->input('state') ?? $request->jwtClaims['merchant_id']; $code = $request->input('code'); // 授权码 if (!$state) { return $this->errorResponse(300, 'Invalid state parameter'); } // state值验证通过,继续处理授权码 $googleOAuthService = new GoogleOAuthService(); $tokens = $googleOAuthService->getRefreshToken($code); if (!isset($tokens['refresh_token'])) { if (isset($tokens['access_token'])) { return $this->errorResponse(300, 'Google Ads Account is Authorized'); } return $this->errorResponse(300, 'Refresh Token getting failed'); } else { $googleOAuthService->saveRefreshToken($tokens['refresh_token'], $state); } return $this->successResponse($tokens, $request); } public function initNewGoogleAdsAccountData(Request $request) { $state = $request->input('state') ??''; if ($state != 'sdf^&^*7hkjhjk') { return $this->errorResponse(300, 'Invalid state parameter'); } $refresh_token = $request->input('refresh_token'); // 授权码 // state值验证通过,继续处理授权码 $googleOAuthService = new GoogleOAuthService(); if (!isset($refresh_token)) { return $this->errorResponse(300, 'Refresh Token getting failed'); } else { $googleOAuthService->initNewGoogleAdsAccountData($refresh_token); } return $this->successResponse('', $request); } // 可以加入一些公共方法 protected function successResponse($data, Request $request): Response { // if ($request->jwtNewToken) { // return new Response(200, // [ // 'Content-Type' => 'application/json', // 'X-New-Token' => $request->jwtNewToken // ], // json_encode($data, JSON_UNESCAPED_UNICODE)); // } else { return Json([ 'code' => 0, 'msg' => 'ok', 'data' => $data, ]); // } } protected function errorResponse($code, $message, $data = []): Response { return Json([ 'code' => $code, 'msg' => $message ?: 'error', 'data' => $data ]); } }