我使用以下代码获取google OAuth2的访问令牌。 在某些时候它已经工作正常,但我做了一些事情/事情发生了,我无法解决什么,现在我得到了:
远程服务器返回错误:(400)错误请求。
当我在邮递员中尝试使用params的帖子时,我得到了
{ “error”:“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编码的工作,我在查看了几个有类似问题的帖子之后添加了这个以进行测试,但似乎无法找到能够使其工作的答案。
答案 0 :(得分:0)
您需要将http POST请求标头的Content-Type
设置为application/x-www-form-urlencoded