我有一个完美的驱动集成应用程序,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文件夹?
答案 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)
}