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

.NET桌面应用调用YouTube API:强制每次启动选择Google账号

解决.NET YouTube API应用强制账号选择及缓存凭证问题

问题根源

  1. 凭证缓存跳过认证:Google .NET客户端默认会把认证后的凭证(访问令牌、刷新令牌)持久化存到本地(Windows路径为%APPDATA%\Google.Apis.Auth,Mac/Linux对应系统缓存目录),只要缓存有效,启动时直接读取缓存,完全跳过OAuth流程,导致Prompt = "select_account"参数根本没机会生效。
  2. 移除client_secret仍能运行:缓存的凭证里包含刷新令牌,即使没有client_secret,客户端也能通过刷新令牌获取新的访问令牌,维持API调用权限。

解决步骤

1. 禁用持久化缓存,强制每次启动重新认证

修改GoogleAuthorizationCodeFlow初始化代码,用内存存储替代默认本地持久化存储,应用重启后缓存自动清空:

var flowInitializer = new GoogleAuthorizationCodeFlow.Initializer
{
    ClientSecrets = new ClientSecrets 
    { 
        ClientId = "你的客户端ID", 
        ClientSecret = "你的客户端密钥" 
    },
    Scopes = new[] { YouTubeService.Scope.Youtube }, // 按需调整权限范围
    Prompt = "select_account",
    DataStore = new MemoryDataStore() // 内存存储,重启后缓存消失
};

如果完全不需要任何缓存,也可以直接设置DataStore = null,但MemoryDataStore能避免认证过程中的临时缓存问题,更稳妥。

2. 清理已存在的本地缓存

若用户之前登录过,需手动清理本地持久化缓存目录,避免残留凭证被读取:

  • Windows:删除C:\Users\<你的用户名>\AppData\Roaming\Google.Apis.Auth文件夹
  • Mac:删除~/Library/Application Support/Google.Apis.Auth文件夹
  • Linux:删除~/.config/Google.Apis.Auth文件夹

3. 验证效果

修改代码并清理缓存后,每次启动应用都会触发OAuth认证流程,弹出账号选择界面,强制用户选择目标账号。

内容的提问来源于stack exchange,提问作者Gianluca Locri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:50:36