Python调用OVH API“This call has not been granted”错误求助
解决OVH API调用权限错误:This call has not been granted
问题排查与解决步骤
1. 先修正Project ID的拼写错误
你的代码里project_id = 'project_id '末尾多了个空格,这会导致请求路径变成/cloud/project/project_id /image,匹配的是不存在的项目,直接触发权限错误。先把空格去掉:
project_id = 'project_id' # 移除末尾多余空格
2. 验证Consumer Key的权限范围
控制台能正常调用说明接口本身没问题,大概率是你的Consumer Key未获取该接口的权限:
- 登录OVH后台,找到对应API应用的Consumer Key管理页面
- 查看权限列表,确认是否包含
GET /cloud/project/{你的实际项目ID}/image的权限(也可以用通配符GET /cloud/project/*/image覆盖所有项目) - 如果权限缺失,重新生成Consumer Key,生成时务必勾选该接口的GET权限
3. 确认Endpoint与参数一致性
- 代码使用的是
ovh-eu,确保你在API.OVH.com控制台测试时选择的也是EU区域 - 代码中指定了
region='SBG5',控制台测试时也要传入相同的region参数,或者尝试去掉代码里的region参数再测试
修正后的示例代码
import json import ovh client = ovh.Client( endpoint='ovh-eu', application_key='你的application_key', application_secret='你的application_secret', consumer_key='你的consumer_key', ) # 注意:移除project_id末尾的空格 project_id = '你的实际project_id' try: result = client.get( f'/cloud/project/{project_id}/image', # 用f-string拼接路径更清晰,避免拼接错误 flavorType=None, osType=None, region='SBG5' ) print(json.dumps(result, indent=4)) except ovh.APIError as e: print(f"OVH API Error: {str(e)}") print(f"OVH Query ID: {e.response.headers.get('X-Ovh-Queryid')}")
内容的提问来源于stack exchange,提问作者deko bobos
相关产品推荐
相关产品推荐

