From 2136c81e14d5c91f9db0d31de53148385bb64305 Mon Sep 17 00:00:00 2001 From: gpu Date: Thu, 22 Jan 2026 00:18:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BE=AE=E4=BF=A1=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E6=89=8B=E6=9C=BA=E5=8F=B7API=EF=BC=9A=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E4=BD=BF=E7=94=A8access=5Ftoken=E5=92=8Ccode=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HoneyBox.Core/Services/WechatService.cs | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/server/HoneyBox/src/HoneyBox.Core/Services/WechatService.cs b/server/HoneyBox/src/HoneyBox.Core/Services/WechatService.cs index e7a61a11..be13b692 100644 --- a/server/HoneyBox/src/HoneyBox.Core/Services/WechatService.cs +++ b/server/HoneyBox/src/HoneyBox.Core/Services/WechatService.cs @@ -178,11 +178,29 @@ public class WechatService : IWechatService try { - var url = $"{WechatGetPhoneNumberUrl}?access_token={code}"; + // 1. 先获取 access_token + var accessToken = await GetAccessTokenAsync(); + if (string.IsNullOrEmpty(accessToken)) + { + _logger.LogError("Failed to get access_token for phone number API"); + return new WechatMobileResult + { + Success = false, + ErrorMessage = "获取access_token失败" + }; + } + + // 2. 使用 access_token 作为 URL 参数,code 放在请求体中 + var url = $"{WechatGetPhoneNumberUrl}?access_token={accessToken}"; + var requestBody = new { code = code }; + var jsonContent = new StringContent( + JsonSerializer.Serialize(requestBody), + System.Text.Encoding.UTF8, + "application/json"); - _logger.LogInformation("Calling WeChat API to get phone number"); + _logger.LogInformation("Calling WeChat API to get phone number with access_token"); - var response = await _httpClient.PostAsync(url, null); + var response = await _httpClient.PostAsync(url, jsonContent); var content = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode)