C# - Google API 请求 access_token - 400 - 错误请求

C# - Google API request access_token - 400 - bad request

我正在尝试从 google (youtube) 获取 access_token,我遵循了文档,但响应是 400 - 错误请求。

            NameValueCollection parameters = new NameValueCollection();
            parameters.Add("client_id", _clientID);
            parameters.Add("client_secret", _clientSecret);
            parameters.Add("grant_type", "authorization_code");
            parameters.Add("redirect_uri", redirectUri);
            parameters.Add("code", Url.Encode(code));
            parameters.Add("content-type", "application/x-www-form-urlencoded");

            WebClient client = new WebClient();
            var result = client.UploadValues("https://accounts.google.com/o/oauth2/token", "POST", parameters);

在文档中我找到了 url: https://oauth2.googleapis.com/token 响应:System.Net.WebException:'The remote server returned an error: (400) Bad Request.'

我试过: https://www.googleapis.com/oauth2/v4/token 响应:System.Net.WebException:'The remote server returned an error: (400) Bad Request.'

并且: https://accounts.google.com/o/oauth2/token 响应:System.Net.WebException:'The remote server returned an error: (400) Bad Request.'

你能帮忙解决一下吗?

提前致谢

我必须将 header 部分写入 WebClient,而无需对 'code'

进行编码
            NameValueCollection parameters = new NameValueCollection();
            parameters.Add("client_id", _clientID);
            parameters.Add("client_secret", _clientSecret);
            parameters.Add("grant_type", "authorization_code");
            parameters.Add("redirect_uri", redirectUri);
            parameters.Add("code", code);

            WebClient client = new WebClient();
            client.Headers.Add("content-type", "application/x-www-form-urlencoded");
            var result = client.UploadValues("https://oauth2.googleapis.com/token", "POST", parameters);

这样很好用。