大家好,想为Gmail API做服务器端集成。基本需求是使用启用Gmail API我想读取我的Gmail收件箱的一些分析目的。
Golang Package -"google.golang.org/api/gmail/v1">
根据文档,我遵循了以下步骤。
-
新注册Gmail
-
增加了使用GCP服务的计费细节
-
创建测试项目
-
启用Gmail API
-
已创建的服务帐户和其中的密钥。有凭证。json文件
-
在后端,我使用Golang包提取Gmail收件箱。
-
成功集成后,我试图运行我的代码,但得到下面的错误
{"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_token
和refresh_token
,您可以在本地保存以供重用。除了"设备流",你还有"原生应用"。流[2],但我发现前者是一个更简单的过程。
- https://developers.google.com/identity/sign-in/devices
- https://developers.google.com/identity/protocols/oauth2/native-app