向 Google gmail API 发出令牌请求时出现错误请求 400

Bad Request 400 when making a token request to Google gmail API

我按照此文档进行令牌请求https://developers.google.com/identity/protocols/OAuth2InstalledApp

在第一步中,它工作正常。我可以获得验证码。 第二步,遇到400 Bad Request的问题。我一直在寻找这个问题的答案 2 天,但我无法解决问题。 我像文档一样设置了所有的属性,但是没关系:

POST /oauth2/v3/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/v6xr77ewYqhvHSyW6UJ1w7jKwAzu&
client_id=8819981768.apps.googleusercontent.com&
client_secret=your_client_secret&
redirect_uri=https://oauth2-login-demo.appspot.com/code&
grant_type=authorization_code

这是我的代码:

    postData.Clear()
    ' code is the authentication code in the first request
    postData.Add("code=" + code)
    postData.Add("client_id=###############.apps.googleusercontent.com")
    postData.Add("client_secrect=####################")
    postData.Add("redirect_uri=urn:ietf:wg:oauth:2.0:oob")
    postData.Add("grant_type=authorization_code")

    Dim data As String = String.Join("&", postData.ToArray())
    Dim request As HttpWebRequest = HttpWebRequest.Create("https://www.googleapis.com/oauth2/v3/token")
    Dim byteData() As Byte = Encoding.UTF8.GetBytes(data)

    request.Host = "www.googleapis.com"
    request.Method = WebRequestMethods.Http.Post
    request.ProtocolVersion = HttpVersion.Version11
    request.ContentType = "application/x-www-form-urlencoded"
    request.ContentLength = byteData.Length

    Dim dataStream As Stream = request.GetRequestStream()
    dataStream.Write(byteData, 0, byteData.Length)
    dataStream.Close()        

    Dim response As HttpWebResponse = request.GetResponse()
    Dim reader As Stream = response.GetResponseStream()
    response.Close()

感谢您的回答!

我刚刚发现了一个错误。这是一个愚蠢的错误。我输入了 client_secrect 而不是 client_secret。我不敢相信我花了 2 天时间来修复这个错误。