Python调用YouTube API时出现“Access blocked: MyAPP request is invalid”错误的求助
Python调用YouTube API时出现“Access blocked: MyAPP request is invalid”错误的求助
看起来你遇到的这个认证错误在Google API使用中挺常见的,别慌,我来帮你梳理几个最可能的原因和解决办法:
一、先检查OAuth 2.0客户端配置
这是最容易踩坑的核心点:
- 确保你在Google Cloud控制台创建的是**“桌面应用”类型**的OAuth客户端ID,而不是Web应用或其他类型。你的代码用的是
InstalledAppFlow,专门对应桌面应用的认证流程,类型不匹配直接就会触发这个错误。 - 核对
client_secret.json文件是不是你刚创建的桌面应用的配置文件,别不小心用了其他项目的旧文件,或者下载时选错了客户端类型。
二、确认YouTube API服务是否已启用
- 登录Google Cloud控制台,找到你的项目,进入“API和服务” -> “已启用的API和服务”页面,确认YouTube Data API v3已经被启用。如果没启用,赶紧点击启用,启用后可能需要等1-2分钟再测试,让配置生效。
三、代码细节与认证流程检查
先把你的代码贴出来方便对照:
from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow # Replace with the path to your downloaded client_secret.json file CLIENT_SECRETS_FILE = 'client_secret.json' # Define the scopes your application needs SCOPES = ['https://www.googleapis.com/auth/youtube.readonly'] API_SERVICE_NAME = 'youtube' API_VERSION = 'v3' def get_authenticated_service(): flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES) credentials = flow.run_local_server(open_browser=False) # Or flow.run_local_server() for web apps return build(API_SERVICE_NAME, API_VERSION, credentials = credentials) # Now you can use the authenticated service to make YouTube API calls youtube = get_authenticated_service()
- 你代码里用了
open_browser=False,这时候控制台会输出一个授权链接,务必用和Google Cloud项目关联的Google账号打开这个链接授权,别用了不在测试用户列表里的账号。 - 如果手动复制链接容易出错,可以试试把
open_browser=False改成flow.run_local_server(),让程序自动打开浏览器完成授权,减少手动操作的失误。
四、其他易忽略的小问题
- 检查你的网络环境,有没有代理或者防火墙拦截了Google的授权请求?可以暂时关闭代理再测试一次。
- 如果你的应用还处于Google Cloud控制台的“测试”状态,只有添加在“OAuth同意屏幕”测试用户列表里的账号才能正常使用,如果你用的账号不在列表里,也会被拦截。
你可以按照上面的步骤逐个排查,大部分情况下都是客户端类型配置错误或者API未启用的问题,先从这两点入手应该能快速解决。
内容来源于stack exchange
相关产品推荐
相关产品推荐

