9

我正在尝试使用 python 使用计算 OAuth 令牌从谷歌计算访问拉取队列

from oauth2client import gce
from apiclient.discovery import build
import httplib2

credentials = gce.AppAssertionCredentials('')
http = httplib2.Http()
http=credentials.authorize(http)
credentials.refresh(http)
service = build('taskqueue', 'v1beta2', http=http)
tq=service.taskqueues()
tq.get(project=MY_APPENGINE_PROJECT, taskqueue=PULL_QUEUE_NAME, getStats=True).execute()

我不断收到 HttpError 403“您不允许进行此 api 调用”

请帮忙,我错过了什么配置?

谢谢, 谢伊

4

1 回答 1

11

更新:感谢@Shay 提出这个问题,他遇到的问题不再是问题,因为我们允许别名在任务队列 API 中工作(相关时)。

对于后代,这里是下面的原始答案:


我见过的两个最常见的错误是:

  1. 忘记将 包含s~在您的 App Engine 项目中。例如,如果您的应用程序 ID 是my-awesome-app,那么您正在调用

    tq.get(project='my-awesome-app', taskqueue=PULL_QUEUE_NAME...
    

    当你应该打电话时

    tq.get(project='s~my-awesome-app', taskqueue=PULL_QUEUE_NAME...
    
  2. 忘记将 Compute 服务帐户添加queue.yaml. 为此,您需要获取与您的项目关联的服务帐户并将其添加到acl

    queue:
    - name: pull-queue
      mode: pull
      acl:
      - writer_email: 123845678986@project.gserviceaccount.com    # can do all
    

    当然,这意味着PULL_QUEUE_NAME = 'pull-queue'这里。另请注意,123845678986@project.gserviceaccount.com应替换为您的 Compute Engine 实例的服务帐号。

于 2013-06-12T17:05:15.923 回答