Youtube API Invalid Grant 和 Required

我无法通过 OAuth 使用 Youtube API 进行身份验证。它给了我这个错误:


“错误”:CURL 的“invalid_grant”

“错误”: “INVALID_REQUEST”,

“ERROR_DESCRIPTION”: “缺少必需的参数:grant_type”为GoLang

这是我的卷曲代码:


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

}


慕尼黑的夜晚无繁华
浏览 208回答 2
2回答

函数式编程

事实证明,您需要定义内容类型:req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go