用于检索 google+ 域配置文件的 Golang 程序返回 403 Forbidden

标签 go download http-status-code-403 user-profile google-domain-api

你能帮我解决下面的问题吗

我只是在编写一个简单的代码来检索我的 google+ 域用户个人资料。 1. 我正在使用域名为 spaceandhow.com 的 google+ 域帐户

  1. 我已经提供了 https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority 中列出的所有权限

  2. Google+ API 和 Google+ Domain Api 均已在该帐户上启用。

这是我写的函数。

func (p *GoogleAUTH) sendGoogleAuthReq(){

    fmt.Println("GoogleAUTH package: Enter sendGoogleAuthReq")


    data, err := ioutil.ReadFile("D:\\Cygwin\\home\\praprasa\\pragna2.json")
    if err != nil {
        fmt.Printf("ReadFile error: %s", err)
    }


    conf, err := google.JWTConfigFromJSON(data, "https://www.googleapis.com/auth/plus.me")
    if err != nil {
        fmt.Println("json error")

    }

    client := conf.Client(oauth2.NoContext)

    resp, err := client.Get("https://www.googleapis.com/plusDomains/v1/people/me")
    if err != nil {
        fmt.Printf("GoogleAUTH package: request execution failed: %s", err)
        return
    }
    defer resp.Body.Close()

    fmt.Println("GoogleAUTH package: response Status:", resp.Status)
    fmt.Println("GoogleAUTH package: response Headers:", resp.Header)

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Printf("GoogleAUTH package: cannot fetch token: %v", err)
        return
    }

    fmt.Println("GoogleAUTH package: response Body:", string(body))

    fmt.Println("GoogleAUTH package: Exit sendGoogleAuthReq")   
}

这是我得到的错误信息

GoogleAUTH package: response Status: 403 Forbidden
GoogleAUTH package: response Headers: map[Vary:[Origin X-Origin] X-Frame-Options:[SAMEORIGIN] X-Xss-Protection:[1; mode=block] Cache-Control:[private, max-age=0] Server:[GSE] Date:[Sat, 29 Aug 2015 07:55:47 GMT] Content-Type:[application/json; charset=UTF-8] Expires:[Sat, 29 Aug 2015 07:55:47 GMT] X-Content-Type-Options:[nosniff] Alternate-Protocol:[443:quic,p=1] Alt-Svc:[quic=":443"; p="1"; ma=604800]]
GoogleAUTH package: response Body: {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "forbidden",
    "message": "Forbidden"
   }
  ],
  "code": 403,
  "message": "Forbidden"
 }
}

最佳答案

由于 plus API 的 token 问题,将发生禁止的错误。在您为您正在验证的人获得 token 后,您可以简单地编写如下代码来获取人员信息。

func (p *GoogleAUTH) sendGoogleAuthReq(){
   baseUrl := "https://www.googleapis.com/plus/v1/people/me"
   authbear := "Bearer "
   authbear += <access_token>
   cli := &http.Client{}
   req, _ := http.NewRequest("GET", baseUrl, nil)
   req.Header.Set("Authorization", authbear)
   res, _ := cli.Do(req)
   bo, _ := ioutil.ReadAll(res.Body)
   fmt.Println(string(bo))
}

关于用于检索 google+ 域配置文件的 Golang 程序返回 403 Forbidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32284040/

相关文章:

GORM 在相关表中按条件预加载

amazon-web-services - 如何在Go AWS Lambda函数中访问参数

gcc - 在 Cygwin64 : "ld: cannot find -lmingw32" 上编译 cgo lib

go - 如何使用 go1.18 运行在一个源文件中编写的多个模糊测试用例?

java - 可恢复文件下载协议(protocol)

asp.net - 如何在asp.net中实现文件下载

java - 在 QA 和 PROD 中部署时,url 大小超过一定限制时出现 403 错误

javascript - 如何下载通过发布生成的 php 文件,同时避免页面位置被更改?

java - 尽管设置了用户代理,但来自 Java 应用程序(但不是 Web 浏览器)的 HTTP 403

linux - 在 Ubuntu Linux 上使用 Apache 在本地测试您的网站