我正在使用谷歌应用程序默认凭据来获取使用Gmail API的标签列表。
当使用gCloud预览应用运行
命令在本地运行应用程序时,我得到了HttpError:
然后我部署了应用程序并尝试访问。但我得到了
HttpError:
我在
gcloud配置列表中有正确的配置
:
account = my_email@domain.com (Appengine Application Owener & Domain Admin)
disable_usage_reporting = False
project = <appengine_project_id>
GCloud版本详细信息:
Google Cloud SDK 0.9.76
app 2015.08.27
app-engine-python 1.9.25
bq 2.0.18
bq-nix 2.0.18
core 2015.08.27
core-nix 2015.06.02
gcloud 2015.08.27
gsutil 4.14
gsutil-nix 4.12
preview 2015.08.27
我还添加了服务帐户的客户ID
以下是代码:
from googleapiclient.discovery import build
from oauth2client.client import GoogleCredentials
class Connection:
def __init__(cls):
cls.credentials = GoogleCredentials.get_application_default()
def fetch_labels(cls):
service = build('gmail', 'v1', credentials=cls.credentials)
logging.info(service)
results = service.users().labels().list(userId='user@domain.com').execute()
labels = results.get('labels', [])
if not labels:
logging.info('No labels found.')
else:
logging.info('Labels:')
for label in labels:
logging.info(label['name'])
pass
class Handler(webapp2.RequestHandler):
def get(self):
con = Connection()
con.fetch_labels()
我不是100%确定,但我不认为应用程序默认凭据支持域范围的授权。您仍然需要将服务帐户凭据与sub
参数一起使用:
credentials = SignedJwtAssertionCredentials(
service_account_email, service_account_key,
scope='...', sub=user_email)
我正在使用谷歌应用程序默认凭据来获取使用Gmail API的标签列表。 当使用 命令在本地运行应用程序时,我在请求https://www.googleapis.com/gmail/v1/users/user40domain.com/labels?alt=json时获得 然后我部署了应用程序并尝试访问。但是当我请求https://www.googleapis.com/gmail/v1/users/u
我当前正在尝试访问云API,但收到以下错误:
它说要使用以下命令: 在Google Shell中,我尝试了以下操作: 我知道命令指向的是正确的文件位置。如何成功验证应用程序默认凭据?
我创建了一个具有并发gcloud应用程序的Dialogflow代理。但是,当我尝试将它集成到Node.js后端时,它似乎访问了错误的应用程序默认凭据。 我可以确认它正在验证身份验证是否成功,因为当我运行以下代码时,它的控制台记录了正确的项目ID(diagnosistest-56e81): null 当我执行此操作时,会得到不同的错误消息:
这里的文档说生产应用引擎项目应该有权访问默认凭据?: “3.如果您正在谷歌App Engine生产中运行,将使用与应用程序关联的内置服务帐户。” 是不是我漏了什么装置? 我的应用程序引擎版本(gradle):