GetDailyMetricsTimeSeries 上的 golang gmbapi 服务 BusinessProfilePerformance 返回错误 404:未找到请求的实体
admin 阅读:131 2024-03-22

我构造了传递 credentialsfile 和身份验证范围的服务,然后使用正确的名称 (locations/{location_id}) 调用 getdailymetricstimeseries,但返回错误 404。
ctx := context.background()
performanceservice, err := businessprofileperformance.newservice(ctx,
option.withcredentialsfile("client_secret.json"),
option.withscopes(scope))
if err != nil {
log.println(err.error())
return
}
cm := performanceservice.locations.getdailymetricstimeseries("locations/12345...")
cm.dailymetric("website_clicks")
cm.dailyrangestartdateyear(2022)
cm.dailyrangestartdatemonth(6)
cm.dailyrangestartdateday(1)
cm.dailyrangeenddateyear(2022)
cm.dailyrangeenddatemonth(12)
cm.dailyrangeenddateday(30)
response, err := cm.do()
if err != nil {
log.println(err.error())
return
}
if c := response.httpstatuscode; c >= 200 || c <= 299 {
j, _ := response.marshaljson()
log.println(j)
}我的client_secret.json文件是这样的
{
"type": "",
"project_id": "",
"private_key_id": "",
"private_key": "",
"client_email": "",
"client_id": "",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": ""
}我认为问题在于缺少 location_id 引用的主题参数,但我没有找到可以传递它的位置 我已经隐藏了json文件的个人信息
正确答案
问题出在身份验证上,主题丢失了,所以我这样处理:
func (a *appcredential) getcredentials(ctx context.context, scope string) (*google.credentials, error) {
jsonfile, err := os.open("config/client_secret.json")
if err != nil {
log.println("error oppening json")
return &google.credentials{}, err
}
defer jsonfile.close()
jsondata, _ := ioutil.readall(jsonfile)
creds, err := google.credentialsfromjsonwithparams(ctx, jsondata, google.credentia<a style='color:#f60; text-decoration:underline;' href="https://www.codesou.cn/" target="_blank">lsp</a>arams{scopes: []string{scope}, subject: "<a href="https://www.codesou.cn/" class="__cf_email__" data-cfemail="f796949498829983b7929a969e9bd994989a">[email protected]</a>"})
if err != nil {
return &google.credentials{}, err
}
return creds, nil}
然后
ctx := context.Background()
creds, err := appCreds.GetCredentials(ctx, "https://www.googleapis.com/auth/business.manage")
if err != nil {
log.Println(err.Error())
return
}
performanceService, err := businessprofileperformance.NewService(ctx, option.WithCredentials(creds))
if err != nil {
log.Println(err.Error())
return
}
cm := performanceService.Locations.GetDailyMetricsTimeSeries("locations/{location_id}")
response, err := cm.Do()声明
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!



