gpt4 book ai didi

google-app-engine - 使用 App Engine 开发服务器向 Google API 声明身份

转载 作者:IT王子 更新时间:2023-10-29 02:15:37 24 4
gpt4 key购买 nike

我有一个在 App Engine 上运行的 Golang 应用,我想调用 Analytics API 来处理一些指标。在 App Engine 和开发服务器上。

This page describes the overall procedure使用服务帐户进行服务器到服务器通信并使用 OAuth2 获取访问 token 。我想避免自己这样做,所以我找到了 Google APIs for Go以及以下描述 how to do it for App Engine 的内容.

我已将 App Engine 应用的服务帐户电子邮件添加到 Google Analytics 以获得读取权限。

我曾使用 Query Explorer 来处理查询效果很好。我什至使用了来自此处的 API 查询 URI,其中包含正确的访问 token 并且工作正常。这适用于 cURL 或通过 App Engine 上的 urlfetch 调用它。

我需要的是在 App Engine 上以及在使用开发服务器时自动获取访问 token 。

此处是 URL 缩短器的示例,它已修改为使用 Analytics API。

    client := http.Client{
Transport: &oauth2.Transport{
Source: google.AppEngineTokenSource(c, analytics.AnalyticsScope),
Base: &urlfetch.Transport{Context: c},
},
}
svc, err := analytics.New(&client)
if err != nil {
return nil, err
}

data, err := svc.Data.Ga.Get("...")

开发服务器中的响应是401 Invalid Credentials, authError。

这应该像这样工作还是我遗漏了什么?

更新

这样,问题就解决了一半。当我传入服务帐户的电子邮件和 .pem 文件时,它现在使用开发服务器工作正常。但是,App Engine 中的同一个服务帐户不适用于上述代码!

googleapi: Error 403: User does not have any Google Analytics account., insufficientPermissions

User应该是我在开发服务器上已经成功使用的服务账号,所以我不太明白这个问题。 App Engine 和开发服务器上的代码完全相同。

Google Analytics 设置为具有读取权限,我使用只读 API。它已经在开发服务器上运行,所以应该没问题。

问题可能有什么不同?

最佳答案

可以在启动时向开发服务器提供必要的信息,例如here。 .

$ dev_appserver.py --appidentity_email_address email --appidentity_private_key_path file.pem

对于 App Engine,您不需要使用此服务帐户,而是使用具有应用名称的帐户:

app_name@appspot.gserviceaccount.com

关于google-app-engine - 使用 App Engine 开发服务器向 Google API 声明身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com