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)