You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用.NET客户端库调用Admob API时遭遇HttpStatusCode 401未授权错误

解决AdMob API服务账号认证未授权问题

问题根源

你遇到的Google.GoogleApiException(未授权)错误,主要由以下几个常见原因导致:

1. 服务账号未获得AdMob账户授权

服务账号无法直接访问AdMob数据,必须手动将其添加到AdMob账户的权限列表:

  • 登录AdMob后台,进入设置 > 访问权限
  • 点击添加用户,输入服务账号邮箱,分配对应权限(如只读)
  • 保存后等待5-10分钟让权限生效

2. .NET Core下p12证书兼容性问题

.NET Core对p12格式证书的加载存在兼容性问题,建议改用JSON格式的服务账号密钥:

  • 登录Google Cloud Console,找到目标服务账号,下载JSON密钥文件
  • 替换原有认证代码为:
using Google.Apis.Auth.OAuth2;
using Google.Apis.AdMob.v1;
using Google.Apis.Services;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 加载JSON密钥文件
        var credential = GoogleCredential.FromFile("your-service-account-key.json")
            .CreateScoped(AdMobService.ScopeConstants.AdmobReadonly);

        // 初始化AdMob服务
        var service = new AdMobService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Admob API Sample",
        });

        // 异步调用API(避免同步阻塞引发死锁)
        var accounts = await service.Accounts.List().ExecuteAsync();
    }
}

3. AdMob API未在Google Cloud Console启用

  • 登录Google Cloud Console,搜索AdMob API,确认其状态为已启用
  • 若未启用,点击启用按钮并等待生效

4. 作用域配置错误

确保使用的作用域是AdMob API官方支持的:

  • 只读权限:AdMobService.ScopeConstants.AdmobReadonly
  • 读写权限:AdMobService.ScopeConstants.Admob

额外提示

  • 避免在控制台程序中使用GetAwaiter().GetResult(),推荐使用async/await异步模式,防止线程死锁
  • 确保JSON密钥文件路径正确,且程序拥有读取权限

内容的提问来源于stack exchange,提问作者Thi Pham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:45:32