我正在尝试使用javascript获取Google APi的access_token并始终收到错误消息:invalid_request
。有我的代码:
var options = {
url: tokenURL,
type: "POST",
headers: { "Content-type": "application/x-www-form-urlencoded"},
dataType: "json",
data: {
"code":successCode,
"client_id": clietId,
"client_secret": clientSecret,
"grant_type": "authorization_code",
"redirect_url": "urn:ietf:wg:oauth:2.0:oob"
},
complete: function (e) {
alert(e.status);
},
};
$.ajax(options);
我还尝试使用简单的html表单发出POST请求,但它确实有用。
<form method="post" action="https://accounts.google.com/o/oauth2/token">
<input name="code" type="text" value="##code##" />
<input name="client_id" type="text" value="##client_id##" />
<input name="client_secret" type="text" value="##client_secret##" />
<input name="grant_type" type="text" value="authorization_code" />
<input name="redirect_uri" type="text" value="urn:ietf:wg:oauth:2.0:oob" />
<input type="submit" /></form>
我不知道javascript请求有什么问题。我错过了一些参数或标题吗?
答案 0 :(得分:0)
看起来data
的编码(在第一个示例中)与内容类型不匹配。
data
的编码似乎是application / json,但指定的内容类型是application / x-www-form-urlencoded。
您需要将data
的编码更改为urlencoded。
data: "code=successCode&client_id=clientId&client_secret=clientSecret&grant_type=authorization_code&redirect_url=urn:ietf:wg:oauth:2.0:oob"