From 4dbc21ebfa667d1e03c8c30a33cda8a54c2a3bbf Mon Sep 17 00:00:00 2001 From: huangguancheng Date: Sat, 22 Feb 2025 18:56:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=A1=E6=9C=89=E4=BB=BB=E4=BD=95=E5=B9=BF?= =?UTF-8?q?=E5=91=8A=E8=B4=A6=E5=8F=B7=E5=88=99=E8=87=AA=E5=8A=A8=E8=A7=A3?= =?UTF-8?q?=E7=BB=91=E6=8E=88=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/OAuthController.php | 33 +++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/app/controller/OAuthController.php b/app/controller/OAuthController.php index 46ab910..73b6a9c 100644 --- a/app/controller/OAuthController.php +++ b/app/controller/OAuthController.php @@ -4,6 +4,7 @@ namespace app\controller; use app\service\GoogleOAuthService; use app\service\BpsAdAccountService; +use app\service\GoogleAdsAccountService; use support\Request; use support\Response; use DI\Annotation\Inject; @@ -32,6 +33,12 @@ class OAuthController */ private $bpsAdAccountService; + /** + * @Inject + * @var GoogleAdsAccountService + */ + private $googleAdsAccountService; + public function getAuthCode(Request $request) { @@ -71,10 +78,10 @@ class OAuthController public function handleCallback(Request $request) { // $state = $request->input('state') ?? $request->jwtClaims['uid']; - $state = $request->input('state') ?? $request->jwtClaims['merchant_id']; + $state = $request->input('state') ?? $request->jwtClaims['merchant_id']; $merchantId = $request->jwtClaims['merchant_id']; - $userId = $request->jwtClaims['uid']; - $code = $request->input('code'); // 授权码 + $userId = $request->jwtClaims['uid']; + $code = $request->input('code'); // 授权码 if (!$state) { return $this->errorResponse(300, 'Invalid state parameter'); @@ -97,18 +104,30 @@ class OAuthController } return $this->errorResponse(300, 'Refresh Token getting failed'); } else { + //如果这个授权用户名下没有任何广告账号 + $option = []; + $option['refresh_token'] = $tokens['refresh_token']; + + $listAccessibleCustomers = $this->googleAdsAccountService->runListAccessibleCustomers($option); + if (empty($listAccessibleCustomers)) { + $googleOAuthService = new GoogleOAuthService(); + $googleOAuthService->revokeToken($tokens['refresh_token'], $merchantId); + + return $this->errorResponse(300, 'has not any google ads account'); + } + // $googleOAuthService->saveRefreshToken($tokens['refresh_token'], $state); //作废2025-2-13 - $googleOAuthService->saveRefreshTokenNew($tokens['refresh_token'],$tokens['access_token'], $merchantId,$userId); + $googleOAuthService->saveRefreshTokenNew($tokens['refresh_token'], $tokens['access_token'], $merchantId, $userId); // 生成 UUID $uuid = $this->generateUuid(); - // echo $uuid; // 例如:f47ac10b-58cc-4372-a567-0e02b2c3d479 + // echo $uuid; // 例如:f47ac10b-58cc-4372-a567-0e02b2c3d479 $redisKey = self::REDIS_KEY_PREFIX . $uuid; //把$tokens['refresh_token']存入redis的redisKey, 并设置过期时间为10分钟 Redis::setex($redisKey, 600, $tokens['refresh_token']); // 保存refresh token到数据库 - // $googleOAuthService->saveRefreshToken($tokens['refresh_token'], $state, $uuid); - // // 触发事件 + // $googleOAuthService->saveRefreshToken($tokens['refresh_token'], $state, $uuid); + // // 触发事件 return $this->successResponse(['token' => $uuid], $request); } // return $this->successResponse($tokens, $request);