Gmail API - Oauth2/google:没有找到凭据(Golang)



大家好,想为Gmail API做服务器端集成。基本需求是使用启用Gmail API我想读取我的Gmail收件箱的一些分析目的。

Golang Package -"google.golang.org/api/gmail/v1">

根据文档,我遵循了以下步骤。

  1. 新注册Gmail

  2. 增加了使用GCP服务的计费细节

  3. 创建测试项目

  4. 启用Gmail API

  5. 已创建的服务帐户和其中的密钥。有凭证。json文件

  6. 在后端,我使用Golang包提取Gmail收件箱。

  7. 成功集成后,我试图运行我的代码,但得到下面的错误

    {"level":"error","msg":"Error while creating gmail service : oauth2/google: no credentials found","time":"2021-07-25T15:11:23+05:30"}

谁能帮我弄清楚缺少什么?

我目前使用OAuth与YouTube和设备流[1],所以这可能会有所帮助。首先,您需要像这样发出一个一次性请求:

data := url.Values{
"client_id": {"something.apps.googleusercontent.com"},
"scope": {"https://www.googleapis.com/auth/youtube"},
}
res, err := http.PostForm("https://oauth2.googleapis.com/device/code", data)

您将得到如下响应:

type OAuth struct {
Device_Code string
User_Code string
Verification_URL string
}

,你可以做一次提示给用户,像这样:

1. Go to
https://www.google.com/device
2. Enter this code
HNDN-ZWBL
3. Sign in to your Google Account

然后,在用户登录后,您可以执行这样的交换请求:

data := url.Values{
"client_id": {"something.apps.googleusercontent.com"},
"client_secret": {"super secret"},
"device_code": {"device code from above"},
"grant_type":  {"urn:ietf:params:oauth:grant-type:device_code"},
}
res, err := http.PostForm("https://oauth2.googleapis.com/token", data)

这将给您一个access_tokenrefresh_token,您可以在本地保存以供重用。除了"设备流",你还有"原生应用"。流[2],但我发现前者是一个更简单的过程。

  1. https://developers.google.com/identity/sign-in/devices
  2. https://developers.google.com/identity/protocols/oauth2/native-app

相关内容

  • 没有找到相关文章

最新更新