我调用微博api的获取access_token接口报错:
{"error":"invalid_grant","error_code":21325,"request":"/oauth2/access_token","error_uri":"/oauth2/access_token","error_description":"invalid authorization code:7abb88384ea0a118814aadde61bdcccb"}
调用方式是:
https://api.weibo.com/oauth2/access_token?client_id=%E8%87%AA%E5%B7%B1%E7%9A%84appkey&client_secret=%E8%87%AA%E5%B7%B1%E7%9A%84appsecret&grant_type=authorization_code&redirect_uri=%E5%9B%9E%E8%B0%83%E5%9C%B0%E5%9D%80&code=7abb88384ea0a118814aadde61bdcccb
这到底是为什么,是因为code值不能重复使用吗,还是其它原因,我这是在postman上面测试的,用HttpWebRequest结果是一直报400服务器错误,我c#是这样调用的(我看说明是要使用post,但是值是拼在url上的,body可以不传值,我用postman也是post调用,但是值直接拼在url上,没有写在body中,能调但是报上面错):
public static string HttpPost(string Url, string postDataStr)
{
int I = 0;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
CookieContainer cookieCon = new CookieContainer();
request.Method = "POST";
request.Timeout = 50000;
request.CookieContainer = cookieCon;
request.KeepAlive = true;
request.ProtocolVersion = HttpVersion.Version10;
request.ServicePoint.Expect100Continue = false;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream);
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
string retString = null;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response != null)
{
response.Cookies = cookieCon.GetCookies(response.ResponseUri);
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
myResponseStream.Dispose();
myRequestStream.Close();
myRequestStream.Dispose();
}
return retString;
}
postDataStr值我照样也传了值