使用Google Generative API(PaLM)调用palm.chat()时遇403权限不足错误求助
解决PaLM API调用palm.chat()时的403权限范围不足问题
核心问题分析
你的代码同时使用了API密钥认证和服务账号应用默认凭据,导致Google SDK优先尝试用服务账号认证,但该账号未配置正确的权限范围,从而触发ACCESS_TOKEN_SCOPE_INSUFFICIENT错误。另外,API密钥认证方式不需要设置OAuth权限范围,你之前做的OAuth同意屏幕配置是多余的。
解决方案
直接移除GOOGLE_APPLICATION_CREDENTIALS环境变量的设置,只保留API密钥的配置即可,修改后的代码如下:
import google.generativeai as palm palm.configure(api_key='XXXXXXXXXXXXXXXXXXXXX') response = palm.chat(messages='Hello') print(response.last)
原因说明
- 当你调用
palm.configure(api_key=...)时,SDK已经完成了API密钥的认证流程,此时不需要再设置服务账号凭据。 - 额外设置
GOOGLE_APPLICATION_CREDENTIALS会让SDK切换到服务账号认证模式,而你的服务账号没有为PaLM API配置对应的权限范围,因此出现403错误。 - 你已经通过curl验证过API密钥可用,说明密钥本身是有效的,只需用它单独认证即可。
若需使用服务账号认证(可选)
如果非要用服务账号而非API密钥,需要为服务账号添加https://www.googleapis.com/auth/generative-language.talk权限范围,同时确保服务账号已被授予PaLM API的访问权限。但这种方式比API密钥复杂,对于你的场景完全没必要。
内容的提问来源于stack exchange,提问作者flyingchicken
相关产品推荐
相关产品推荐

