用于后端脚本的Google Gmail API oauth2.0凭据

kyks70gy  于 2023-04-19  发布在  Go
关注(0)|答案(1)|浏览(162)

我有一个Google Cloud帐户,并设置了一个使用GMAIL API的项目。我需要完全访问权限,这样我就可以在收件箱中找到电子邮件,获取附件并删除电子邮件。我的脚本是用PHP编写的,使用Google API PHP客户端库,可以工作,但第一次运行它需要同意页面,因为我的脚本不在Web服务器上,所以我解决了这个问题,但现在我发现几周后刷新令牌过期了。
出于某种原因,我需要设置一个同意页面,这是没有意义的,因为我只访问我的谷歌云帐户的Gmail收件箱.在同意页面设置,我没有一个选项为内部用户,和悬停弹出建议我需要一个工作区帐户?不知道这是什么或为什么我需要一个,但好吧,如果我需要一个,我如何将其添加到我的谷歌云帐户中?在云控制台的任何地方都没有链接,如果我谷歌搜索它并转到一个谈论工作空间的页面,它只让我在登录我的个人谷歌Chrome帐户时看到该页面,当我切换到我的业务云帐户时,它会重定向到与工作空间无关的其他页面,并且在任何地方都没有提到或链接到它。这几乎就像工作空间与Google API无关一样,除了需要在一个使用API的后端脚本?
由于我必须在同意设置中选择外部用户,因此我被困在测试模式中,我猜这将刷新令牌限制为7天,这似乎是我的问题。但我不能去生活与这个项目,因为这需要一个youtube视频和一堆其他垃圾,没有任何关系,我需要获得凭证,以访问后端服务。所以我再次感到困惑后,几个星期的循环在这一点上,我只是需要帮助弄清楚什么鬼需要简单地从谷歌获得凭据使用自动脚本。我尝试了一个服务帐户,但我猜服务帐户只适用于只读访问,你不能用它删除电子邮件。我也试过imap访问来获得我需要的东西,但我猜谷歌几个月前也禁用了它。
所以,底线是,我是否需要一个工作区帐户才能在同意页面中设置内部用户,这样我就不必公开我的项目,这样我就可以将刷新令牌设置为永不过期?如果是这样,我该如何做到这一点?如果没有人知道如何做到这一点,有没有人知道我可以雇一家公司来带我走一遍?有没有人试过付费的谷歌云支持?和谷歌云/开发者/API页面一样糟糕,我很犹豫是否要支付需要数周时间才能得到与我的问题无关的答案的支持。

643ylb08

643ylb081#

您应该能够为“桌面应用程序”创建一个oauth客户端和一个允许您持久化刷新令牌的同意屏幕。

创建OAuth同意界面

1.在新选项卡或窗口中打开Google Cloud Console
1.在“Google Cloud Console”旁边,单击向下箭头x1c 0d1x并选择您的项目。
1.在左上角,单击菜单


1.单击【API与服务】〉【凭证】,出现您项目的凭证页面。
1.点击【OAuth同意界面】,弹出OAuth同意界面。
1.在“用户类型”下,选择【内部】。如果使用的是@gmail.com账号,则选择【外部】。
1.点击【创建】,弹出“编辑应用注册”页面。

  • 填写表格:
  • 在【应用名称】中,输入一个描述性的名称,用户可以看到。
  • 用户支持邮箱中,输入您的个人邮箱地址。
  • 开发人员联系信息下,输入您的个人电子邮件地址。
  • 单击【保存并继续】,弹出“范围”表单。
  • 在“范围”表单中,单击【保存并继续】,将显示一个摘要。
  • 单击【返回 Jmeter 板】。

侧底片

**注意:**为Google Workspace Marketplace构建生产附加组件时,在发布前需要正确填写同意屏幕信息。

创建Oauth凭证

1.选择【凭证】选项卡,点击【创建凭证】按钮,选择【OAuth客户端ID】。
1.选择应用类型桌面应用,输入描述性名称,点击【创建】按钮。
1.单击file_download(下载JSON)按钮。
1.将您的机密文件重命名为client_secret.json

启动Oauth流程

gcloud auth application-default login --scopes "TODO" --client-id-file client_secret.json

复制凭据文件:~/.config/gcloud/application_default_credentials.json

获取访问令牌

你可以在这里使用gcloud,但你不需要这样做。

GOOGLE_ACCESS_TOKEN=$(gcloud auth application-default print-access-token --scopes "TODO")

使用访问令牌

curl https://someapi.googleapis.com/somepath \
  -H "Authorization: Bearer $GOOGLE_ACCESS_TOKEN"

相关问题