尝试使用应用程序数据文件夹时updateToken auth错误

时间:2013-04-09 01:15:44

标签: google-drive-api

我有一个完美的驱动集成应用程序,javascript和go-based,具有以下范围:

https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/userinfo.profile
https://www.googleapis.com/auth/drive

现在我尝试使用Application文件夹。如果我不更改我的范围,那么我会按预期得到一个错误,声称应用程序范围未正确设置。现在我添加以下范围(在api-console和我的应用程序中):

https://www.googleapis.com/auth/drive.appdata

现在我很遗憾在oauth.updateToken googelapi函数中出现错误,并显示以下错误消息:

OAuthError: updateToken: 400 Bad Request

我是否误解了应该如何使用Application文件夹?

1 个答案:

答案 0 :(得分:0)

您需要再次向用户显示一个对话框并检索新标记,而不是更新现有标记。按config.AuthCodeURL()创建新的身份验证代码网址,并询问用户是否有权限。用户授予权限后,请通过调用t.Exchange(code)将代码与Google端点交换。

var config = &oauth.Config{
  ClientId:     "YOUR_CLIENT_ID",
  ClientSecret: "YOUR_CLIENT_SECRET",
  Scope:        "YOUR_SCOPES",
  RedirectURL:  "YOUR_REDIRECT_URI",
  AuthURL:      "https://accounts.google.com/o/oauth2/auth",
  TokenURL:     "https://accounts.google.com/o/oauth2/token",
}

authUrl := config.AuthCodeURL("state")
fmt.Printf("Go to the following link in your browser: %v\n", authUrl)
t := &oauth.Transport{
  Config:    config,
  Transport: http.DefaultTransport,
}

// Read the code, and exchange it for a token.
fmt.Printf("Enter verification code: ")
var code string
fmt.Scanln(&code)
_, err := t.Exchange(code)
if err != nil {
  fmt.Printf("An error occurred exchanging the code: %v\n", err)
}