用于在Go中连接Google Calendar API的凭据

时间:2016-09-29 10:30:18

标签: go google-api google-calendar-api google-oauth

我正在转换PHP应用程序以访问Google日历。我用这个step by step开始。

一切顺利,但当我运行quickstart.go时,我收到以下错误:

  

无法将客户端密钥文件解析为config:oauth2 / google:missing   client_credentials.json退出状态1中的重定向URL

client_secret.json的内容是:

{  
   "installed":{  
      "client_id":"***********content.com",
      "project_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_secret.json文件位于我的GOPATH根目录中,按照步骤

的说明进行操作

我的PHP应用程序已经有OAuth 2.0 client ID,可以在PHP中正常运行。我只是想在新的Go应用程序中使用那个来访问多个用户日历,但是当我下载附加到该ID的json文件时,我收到上面的错误。也许quickstart.go不适合这种用法。

任何提示?

1 个答案:

答案 0 :(得分:1)

https://console.developers.google.com/apis/credentials上创建OAuth凭据时,对话框最初会提示您“配置OAuth客户端”,并且可以在“ Web应用程序”,“桌面应用程序”等之间进行选择。

根据最初选择的类型,为生成的OAuth凭据获得的client.json可能不包含“返回URL”。

例如,对于“ Web应用程序”,client.json没有重定向URL:

{
  "web": {
    "client_id": "x.apps.googleusercontent.com",
    "project_id": "x",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "x"
  }
}

在使用“桌面应用”时,它具有:

{
  "installed": {
    "client_id": "x.apps.googleusercontent.com",
    "project_id": "x",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "x",
    "redirect_uris": [
      "urn:ietf:wg:oauth:2.0:oob",
      "http://localhost"
    ]
  }
}

Go oauth.google模块始终需要返回URI:https://github.com/golang/oauth2/blob/0f29369cfe4552d0e4bcddc57cc75f4d7e672a33/google/google.go#L61