Google Gemini在Android端报403 PERMISSION_DENIED错误求助
解决Google Gemini API在Android设备上的403 PERMISSION_DENIED问题
问题背景
使用以下Python代码调用Google Gemini接口时,桌面端运行正常,但在Android设备上抛出“403 PERMISSION_DENIED”错误,已尝试参考官方排查文档和更新generativeai库,问题仍未解决:
import google.generativeai as genai # Create your views here. # add here to your generated API key genai.configure(api_key="*****") def ask_question(request): if request.method == "POST": text = request.POST.get("text") try: model = genai.GenerativeModel("gemini-1.5-flash") except Exception as e: print(e) chat = model.start_chat() try: response = chat.send_message(text) except Exception as e: print(e) try: response = chat.send_message(text) except Exception as e: print(e) user = request.user ChatBot.objects.create(text_input=text, gemini_output=response.text, user=user) # Extract necessary data from response response_data = { "text": response.text, # Assuming response.text contains the relevant response data # Add other relevant data from response if needed } return JsonResponse({"data": response_data}) else: return JsonResponse({"data": 'I apologise but there is an issue'})
解决建议
- 检查API密钥的访问限制:登录Google Cloud控制台,找到对应的API密钥,查看是否设置了IP白名单。如果只允许桌面IP访问,移动端动态IP不在列表内就会触发403。可以暂时取消IP限制测试,或者针对Android应用设置应用限制(绑定应用的SHA1指纹和包名)。
- 排查Android设备网络问题:检查设备是否开启VPN、代理,这类工具可能改变请求IP导致被拦截;确认应用已申请
INTERNET权限;如果用模拟器,验证模拟器网络是否正常连接。 - 确认API区域与网络区域匹配:Gemini API部分区域存在访问限制,检查Google Cloud项目的API启用区域,同时切换Android设备的网络(比如从移动数据换WiFi)测试,排除区域限制导致的问题。
- 修复代码中的重复请求:代码里连续两次调用
chat.send_message(text),重复请求可能触发API的频率限制或异常拦截,删除其中一次重复的请求代码。 - 捕获完整错误信息:当前仅打印异常对象,无法获取403的具体原因。修改异常捕获逻辑,打印完整错误详情:
根据详细信息能更精准定位问题(比如配额不足、密钥无效等)。except Exception as e: print(f"错误详情: {str(e)}") if hasattr(e, 'response'): print(f"状态码: {e.response.status_code}") print(f"响应内容: {e.response.text}") - 核查API配额与计费状态:登录Google Cloud控制台,确认Gemini API的调用配额是否充足,同时检查项目是否存在欠费情况,欠费会导致API访问被限制。
内容的提问来源于stack exchange,提问作者Mohammed Baashar
相关产品推荐
相关产品推荐

