Google OAuth2 获取访问令牌 缺少grant_type



我使用以下代码来获取谷歌OAuth2的访问令牌。在某些时候它一直工作正常,但是我已经做了一些事情/发生了一些事情,但我无法弄清楚是什么,现在我得到了:

远程服务器返回错误:(400) 错误请求。

当我尝试使用邮递员中的参数发布帖子时,我得到

{ "错误": "invalid_request", "error_description": "缺少必需参数: grant_type" }

 using (WebClient client = new WebClient())
        {
            byte[] response =
                client.UploadValues("https://accounts.google.com/o/oauth2/token","POST", new NameValueCollection()
                    {
                        {"code",HttpContext.Current.Server.UrlEncode(authCode.ToString())},
                        {"redirect_uri", Uri.EscapeDataString("http://YouTubeTest.org/testpage.aspx")},
                        {"client_id", HttpContext.Current.Server.UrlEncode(clientId)},
                        {"client_secret", HttpContext.Current.Server.UrlEncode(clientSecret)},
                        {"grant_type", "authorization_code"}
                    });
            string result = Encoding.UTF8.GetString(response);
            XElement node = XElement.Parse(JsonConvert.DeserializeXNode(result, "Root").ToString());
            string refreshToken = node.Element("refresh_token").Value;
            string accessToken = node.Element("access_token").Value;
        //more work to do something with tokens
        }

这以前在没有 URL 编码的情况下工作,在查看了一些有类似问题的帖子后,我将其添加到测试中,但似乎找不到使其工作的答案。

您需要

将 http POST 请求标头的Content-Type设置为 application/x-www-form-urlencoded

相关内容

  • 没有找到相关文章

最新更新