ASP.NET Core MVC应用如何通过Google Ads API访问客户广告账户数据?
ASP.NET Core MVC访问Google Ads客户账户数据的解决方案
核心结论
不需要你的应用拥有独立的Google Ads账户,也不需要每个客户提供API令牌。正确的方式是通过OAuth 2.0让客户授权你的应用访问他们的Google Ads账户,结合你已有的开发者令牌来调用API。
基于你已完成的工作,具体实现步骤:
扩展OAuth权限范围
你当前的Google登录仅获取了基础用户权限,需要添加Google Ads API的核心权限范围https://www.googleapis.com/auth/adwords,同时加上离线访问权限offline_access(用于长期刷新令牌)。- 在Google Cloud控制台的OAuth consent screen中更新已授权的范围;
- 在ASP.NET Core的Google登录配置里,指定这些额外的权限范围:
services.AddAuthentication().AddGoogle(options => { options.ClientId = "你的ClientId"; options.ClientSecret = "你的ClientSecret"; options.Scope.Add("https://www.googleapis.com/auth/adwords"); options.Scope.Add("offline_access"); options.AccessType = "offline"; });
获取客户的授权凭据
用户通过Google登录你的应用时,会被要求授权你的应用访问他们的Google Ads账户。授权成功后,你可以获取到Refresh Token(需确保配置了offline_access),将这个令牌和用户信息关联存储到数据库即可。调用Google Ads API
使用Google Ads API的C#客户端库,结合以下凭证发起请求:- 你的开发者令牌;
- 应用的ClientId/ClientSecret;
- 客户的Refresh Token;
- 客户的Google Ads客户ID(可让用户手动输入,或通过API调用获取用户名下的所有客户ID列表)。
示例代码:
using Google.Ads.GoogleAds.Lib; using Google.Ads.GoogleAds.V15.Services; // 初始化配置 var adsConfig = new GoogleAdsConfig { DeveloperToken = "你的开发者令牌", ClientId = "你的ClientId", ClientSecret = "你的ClientSecret", RefreshToken = "存储的客户Refresh Token", // 客户的Google Ads客户ID,去掉横杠,格式如123-456-7890写成1234567890 LoginCustomerId = "客户的客户ID" }; // 创建客户端并调用API var googleAdsClient = new GoogleAdsClient(adsConfig); var customerService = googleAdsClient.GetService(Services.V15.CustomerService); var customer = customerService.GetCustomer("customers/客户的客户ID"); // 处理返回数据 Console.WriteLine($"客户名称:{customer.DescriptiveName}");
关键说明
- 开发者令牌是你作为API开发者的身份凭证,由Google颁发给你的开发主体,用于标识你的应用,并非访问特定账户的令牌;
- 客户无需提供任何API令牌,仅需完成一次OAuth授权,你的应用就能长期通过Refresh Token获取访问权限;
- 测试阶段可使用你准备的测试账户,完成授权流程后验证API调用是否正常。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

