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

时间:2015-08-29 08:17:34

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

请你帮我解决下面的问题。

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

  1. 我提供了https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority

  2. 中列出的所有权限
  3. 该帐户已启用Google+ API和Google+域名Api。

  4. 这是我写的功能。

    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"
     }
    }
    

1 个答案:

答案 0 :(得分:0)

由于加上API的令牌问题,将发生禁止错误。获得正在验证的人的令牌后,您只需编写如下代码即可获取人员信息。

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))
}