获取认证码时遇Access blocked错误,求Python解决方案
排查与解决Google OAuth Access Blocked错误
以下是针对你遇到问题的排查步骤和解决方案:
重定向URI配置检查
登录Google Cloud Console,找到你的OAuth客户端ID,确认urn:ietf:wg:oauth:2.0:oob已添加到已授权的重定向URI列表中。桌面应用类型的客户端默认支持该URI,但需手动确认配置无误。敏感范围的审核问题
你使用的https://www.googleapis.com/auth/drive是全权限敏感范围,面向外部用户的应用必须提交Google审核才能使用。未通过审核前,普通外部用户会被拦截。建议先改用https://www.googleapis.com/auth/drive.file(仅访问应用创建的文件)这类非敏感范围测试,验证授权流程是否正常。客户端类型匹配
确认创建的OAuth客户端ID是桌面应用类型,Web应用或其他类型不支持urn:ietf:wg:oauth:2.0:oob这类重定向方式,会导致授权失败。授权缓存清除
修改代码中的prompt参数为prompt='select_account consent',强制用户重新选择账号并授权,避免旧的授权缓存干扰流程。测试账号验证
如果应用是刚发布,先使用OAuth同意屏幕中添加的测试账号(或应用所属的Google Workspace账号)进行测试。这类账号不受审核限制,若测试账号仍报错,说明是配置问题而非审核问题。
修改后的测试代码
from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request # 改用非敏感范围测试 SCOPES = ['https://www.googleapis.com/auth/drive.file'] CLIENT_SECRETS_FILE = 'client.json' REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob' flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES, redirect_uri=REDIRECT_URI) # 强制选择账号并重新授权 auth_url, _ = flow.authorization_url(prompt='select_account consent') print(f'请访问此URL授权应用: {auth_url}') auth_code = input('输入授权码: ') flow.fetch_token(code=auth_code) creds = flow.credentials print(f'访问令牌: {creds.token}') print(f'刷新令牌: {creds.refresh_token}')
内容的提问来源于stack exchange,提问作者timp bill
相关产品推荐
相关产品推荐

