问题标签 [google-auth-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6626 浏览

python - 使用 serviceusage API 和服务帐户启用 API

我想为客户创建 GCP 的自动部署。

为此,我打开了一个页面让他们使用 google 登录,然后启用 IAM API 和 Service Usage API。

然后我创建了一个服务帐户,我想从现在开始使用它,以便按需启用其他所需的 API,而不是一次性启用。

当我尝试启用 cloudkms API 时,我得到

我尝试使用从创建服务帐户的响应中创建的服务帐户凭据 (google.auth.jwt.Credentials),并且添加了所有必需的权限。我不想将角色所有者授予服务帐户,因为我希望该帐户具有尽可能少的权限。

当我尝试使用用户权限获取 cloudkms API 的状态时,它可以工作。

我已经看到一些解决方案解决了我需要为服务帐户创建凭据的问题:https ://console.developers.google.com/apis/credentials但我也确实需要以编程方式执行此操作。

我的代码:

上面提到了错误。

0 投票
1 回答
234 浏览

ubuntu - 使用 Apache 和 Mod-WSGI 从 Flask 运行 API 时遇到问题

我正在开发一个托管在运行 Apache 的 Ubuntu 16.04 服务器上的 Flask 应用程序。该应用程序利用 Google 地球引擎 (GEE)。

GEE 默认存储令牌并从中加载令牌~/.config/earthengine/credentials。虽然这在调用 GEE 时不会造成任何问题python -c,但 GEE 无法从 Flask 中访问令牌,因此无法运行。

也就是说,当在我的 Flask 应用程序中调用时,GEE 会引发异常。我已经通过我的 apache 追溯了这个异常error_log,我相信这是问题的根源:

我尝试将默认凭据文件路径稍微更改earthengine/oauth.py'. /.config/earthengine/credentials'. 这样做之后,我仍然可以python -c调用 GEE,但我对 Flask 没有运气。

我考虑过专门为在我的 Flask 应用程序的上下文中使用 GEE 制作某种文件夹,然后指向earthengine/oauth.py它。但是,我对此非常谨慎。

在这一点上,我不知道这是一个 Flask 问题、一个 Ubuntu 问题、一个 WSGI 问题还是完全其他的问题,所以任何建议都会有所帮助。

一般来说,我觉得有两个问题应该可以帮助我更接近解决方案:(1)如何允许 oauth 脚本访问 Ubuntu 上的 ~/.config?(2) 如何正确地将 apache 指向 ~/.config 作为主目录,即我应该修改哪个 .conf 文件以尝试解决此问题?


编辑:阅读了一些 mod-wsgi 问题后,我认为这可能与WSGIPassAuthorization. 如果是这样,我究竟应该怎么做?

更新:我已按照此处的建议更改了文件权限,并将 oauth.py 指向的文件更改为'/root/.config/earthengine/credentials'. 好消息:我不再收到有关访问文件的错误。坏消息:我现在收到一个由表面上错误的刷新令牌导致的错误。我已经看到这种事情可能是时钟问题,但我的时钟对我来说看起来不错:

(我看的时候时钟看起来ntpd -c lpeer output也不错。)

有鉴于此,我可能会注意到,当我earthengine authenticate的凭据文件中的令牌值没有改变时。这似乎并没有妨碍我在本地使用 earthengine,但是在 Flask 中使用仍然是一个问题。

更新:我现在认为这是尝试在没有 Google 服务帐户的情况下拨打电话的结果。

0 投票
1 回答
747 浏览

google-cloud-platform - 使用 Cloud Build 服务帐号进行编程式身份验证

Cloud Build执行的构建期间,我需要验证我的自定义 Java 代码以使用Google Cloud Storage API。该代码使用Cloud Storage JSON API 客户端

我想使用 Cloud Build 服务帐户进行身份验证,但目前尚不清楚如何在 Java 代码中实现此目的而不将服务帐户密钥文件作为加密资源传递。

是否可以通过在 Cloud Build docker 容器中执行的 Java 代码对 Cloud Build 服务帐户进行身份验证?

0 投票
6 回答
6294 浏览

javascript - 传入的 JSON 对象不包含 client_email 字段

我正在尝试创建一个 Firebase 云功能。所以我想在本地运行我的 firebase 云功能。但是如何设置身份验证不起作用。

我已经安装了 firebase 工具:https ://firebase.google.com/docs/functions/local-emulator 我已经运行了命令firebase login,所以现在我已经登录了。然后我用本教程创建了我的 json 密钥:https ://cloud.google.com/docs/authentication/getting-started 现在如果我输入echo $GOOGLE_APPLICATION_CREDENTIALS结果是/home/$USER/.google/****.json包含

此外,我尝试安装完整的 google cloud sdk 并运行:gcloud auth application-default login但没有成功。

Npm 包版本:

我想我已经提供了足够的信息,但如果您愿意,请随时问我。

代码并不重要,最重要的是即使我已经完成了所有这些步骤,当我在本地模拟我的firebasefirebase serve并触发一个函数时,我有这个错误:错误:传入的JSON对象不包含client_email场地

我可以确保您的 json 文件包含 client_email 字段。

你能帮我通过谷歌进行身份验证吗?

谢谢你的帮助。

0 投票
2 回答
138 浏览

google-api-ruby-client - 尝试访问 GSuite 管理员帐户的用户会给出“401 - 需要登录”

我已经设置了一个新项目来访问我的 GSuite 帐户用户。当我运行我的代码时,它会给出 401 - '需要登录'。

我已向具有所需范围的帐户授予“域范围权限”。

我正在使用的代码是:

该项目是在我的个人谷歌开发者帐户上设置的。

任何想法为什么会发生这种情况以及我该如何解决?

0 投票
0 回答
866 浏览

node.js - 403 "Insufficient authentication scopes" with Google Sheets API and Service Account

I can't for the life of me figure out why this isn't working. I feel like I've done everything comparable to what's done in this tutorial, but it's not working.

I have done the following:

  1. Created a project with the Google Sheets API enabled.
  2. Created a Service Account under the Credentials section of my project.
  3. Downloaded the JSON configuration file for the Service Account.
  4. Saved the private key (-----BEGIN PRIVATE KEY----...., all on one line), the client email, and the project ID to my environment variables.

My code looks like so:

I've verified that the values are being loaded correctly from the environment variables.

This is the response I get after calling connect() on a new instance of GoogleSheetsAPI:

Surely it's something simple. Any ideas? Thanks!

0 投票
1 回答
254 浏览

android - 如何在没有后端服务器的 Android 应用中验证 PhotosLibraryClient 的用户

以前,我正在使用该库: com.google.apis:google-api-services-photoslibrary:v1-rev1-1.23.0 但我被告知它并不打算发布,并且它有一些错误。所以我尝试切换正确的: com.google.photos.library:google-photos-library-client:1.4.0 但是,这有不同的身份验证流程。

基本上,所有文档和示例都涉及客户端机密的问题,以及提供访问令牌的我的服务器,这是 UserCredentials 所需的,而 UserCredentials 又用于 FixedCredentialsProvider 和 PhotosLibraryClient。

但我没有服务器 - 这是一个独立的应用程序。在开发者控制台上设置客户端 ID 时,当您仅指定应用访问权限时,它不会创建客户端密码(而是使用应用的签名)。鉴于它可以让我创建该 ID - 我认为必须有一种方法可以在没有客户端密码的情况下执行此操作。

对于另一个库,流程是:

  • 使用GoogleSignInClient.getSignInIntent()startActivityForResult()确定帐户
  • 假设成功,Task<GoogleSignInAccount>使用返回的意图创建一个onActivityResult
  • 从任务中获取GoogleSignInAccount,然后getAccount()从那里获取
  • 为 Google Photos创建一个GoogleAccountCredential.usingOAuth2()传递所需范围,然后setSelectedAccount()
  • 将 `PhotosLibrary.Builder() 与创建的凭据一起使用

但是对于新的,您需要使用UserCredentials,它需要一个客户端密码(以前不需要,并且在生成 Android ID 时没有创建)和一个访问令牌。

看来我应该能够使用 获取访问令牌GoogleAuthUtil.getToken,但稍后仍然需要客户端密码。getToken 也不起作用 - 我遇到了身份验证异常。可能是因为我的范围是错误的,但我不确定。

我还研究过使用https://github.com/erickogi/AndroidGooglePhotosApi/blob/master/app/src/main/java/ke/co/calista/googlephotos/Utils/AccessTokenFactory.kt来获取令牌,但是还需要客户端密码。

这是(成功)登录帐户并获取令牌的活动。但我无法弥合这与获得图书馆客户之间的差距。

0 投票
1 回答
423 浏览

javascript - Google Cloud Function/google-auth-library:无法读取未定义的属性“用户”

在此之后:https ://medium.com/@nedavniat/how-to-perform-and-schedule-firestore-backups-with-google-cloud-platform-and-nodejs-be44bbcd64ae

代码是:

常量备份 = functions.pubsub.topic('YOUR_TOPIC_NAME_HERE').onPublish(exportDB); module.exports = { 备份 };

当我通过以下方式进行部署时:

我得到错误:

错误: (gcloud.functions.deploy) OperationError: code=3, message=Function failed on loading user code。错误消息:无法加载文件 index.js 中的代码。您的代码中是否存在语法错误?

详细的堆栈跟踪:TypeError:无法读取未定义的属性“用户”

这是 google-auth-library 的东西吗?

0 投票
1 回答
450 浏览

node.js - 错误:使用服务帐户创建 GCP 项目时用户未获得授权

我正在尝试使用 Google API 以编程方式创建 GCP 项目。这是示例代码:

运行此代码后,我收到以下错误:

UnhandledPromiseRejectionWarning:错误:用户未被授权。

谁能帮助我为什么会收到此错误?我该如何解决这个问题?

附言

  • Google 资源管理器 API 已启用。
  • 服务帐户具有 role=owner 权限。
0 投票
1 回答
168 浏览

r - 在生产脚本中设置 client_id 和 client_secret - R

在使用 googleAnalyticsR api 时,我正在使用“ga_auth(token = "my token.httr-oauth") 进行身份验证,并在我的计算机和服务器上运行脚本非常好。当我在生产模式下(使用 CRON)运行这个脚本时,我已经开始出现此错误:

我按照说明创建了自己的项目,下载了 json 文件,并在调用库(googleAnalyticsR)之前进行了设置:

gar_set_client(json = "/home/path/client_secret_XXXX-XXXXXX.apps.googleusercontent.com.json") 2019-11-05 10:41:56> 从 /home/path/client_secret_XXXX-XXXXXX.apps 设置 client.id。 googleusercontent.com.json [1] "my_analytics-export"

我相信我无法告诉 API 使用这个项目而不是通用的,因为我遇到了与开始时相同的错误。

有谁知道怎么做???这绝对不是我的事……而且我的想法已经不多了!

谢谢..