【发布时间】:2014-08-22 16:40:59
【问题描述】:
我在通过 OAuth 使用 Youtube API 进行身份验证时遇到问题。它给了我这个错误:
- “错误”:CURL 的“invalid_grant”
- “错误”:“无效请求”,
"error_description" : GoLang 的“必需参数缺失:grant_type”
这是我的 CURL 代码:
curl -i -X POST "https://accounts.google.com/o/oauth2/token" \
-F 'code=CODE_FROM_MY_USER' \
-F 'client_id=MY_CLIENT_ID' \
-F 'client_secret=MY_CLIENT_SECRET' \
-F 'redirect_uri=http://localhost:8080/platform/youtubeCallback.html' \
-F 'grant_type=authorization_code'
这是我的 Go 代码,已经过验证可用于 Soundcloud API。
func Auth(code string) err {
v := url.Values{}
v.Set("code", code)
v.Set("client_id", "MY_CLIENT_ID")
v.Set("client_secret", "MY_CLIENT_SECRET")
v.Set("redirect_uri", "http://localhost:8080/platform/youtubeCallback.html")
v.Set("grant_type", "authorization_code")
params := strings.NewReader(v.Encode())
req, err := http.NewRequest("POST", "https://accounts.google.com/o/oauth2/token", params)
if err != nil {
return err
}
req.Header.Add("Accept", "application/json")
resp, err := c.Client.Do(req)
if err != nil || resp.StatusCode != 200 {
return err
}
json.NewDecoder(resp.Body).Decode(&c.Token)
return nil
}
【问题讨论】:
标签: curl oauth go youtube-api