我正在尝试使用appengine urlfetch
创建一个项目,但我得到403"来电者没有权限"错误。我在生产中运行此代码,应该自动获得许可。
以下是代码:
from google.appengine.api import app_identity
from google.appengine.api import urlfetch
import json
project_data = {
'projectId': 'test-project-84873',
'name': 'TEST PROJECT'
}
auth_token, _ = app_identity.get_access_token('https://www.googleapis.com/auth/cloud-platform')
response = urlfetch.fetch(
'https://cloudresourcemanager.googleapis.com/v1/projects',
payload = json.dumps(project_data),
method = urlfetch.POST,
headers = {
'Authorization': 'Bearer {}'.format(auth_token),
'Content-Type': 'application/json'
}
)
我的API已启用,并且我能够使用本页底部的API资源管理器成功创建项目https://cloud.google.com/resource-manager/reference/rest/v1/projects/create
如果我使用GET而不是POST运行相同的代码,它会成功返回当前项目信息。
由于
奇怪的是,这段代码在我的本地开发服务器上完美运行,只是没有在生产中...... ???
我尝试使用我在本页底部附近找到的Python客户端库:https://cloud.google.com/docs/authentication
代码:
from oauth2client.client import GoogleCredentials
from apiclient.discovery import build
credentials = GoogleCredentials.get_application_default()
service = build('cloudresourcemanager', 'v1', credentials=credentials)
project_data = {
'projectId': 'project-test-12345',
'name': 'YAY NEW PROJECT'
}
projects = service.projects().create(body=project_data).execute()
我得到了相同的结果。它在本地工作,但不在生产中:(