资源所有者密码授予 "must be a POST request"
Resource Owner Password Grant "must be a POST request"
我一直在尝试使用 Resource Owner Password Grant oAuth 登录,但我似乎无法正常工作。
我没有构建将请求发送到的后端,我正在使用 Invision Power Board's。我找不到任何使用简单 fetch
的示例请求,所以我不确定我是否做错了什么。
这是我发送给客户端的请求:
const form = {
'grant_type': 'password',
'username': 'username',
'password': 'pass',
'scope': 'profile',
'client_id': 'client_id',
}
var formBody = [];
for (var property in form) {
var encodedKey = encodeURIComponent(property);
var encodedValue = encodeURIComponent(form[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");
await fetch(`https://example.com/oauth/token`, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
body: formBody
})
我得到的只是一个错误:
{
"error": "invalid_request",
"error_description": "request must be a POST request"
}
我的格式设置有误还是我遗漏了什么?我一直在关注 oAuth 文档,但也许我误解了如何执行此操作。
我的服务器有问题吗?
编辑 - 使用 reqbin 的示例请求:
POST /oauth/token HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 85
grant_type=password&username=username&password=pass&scope=profile&client_id=client_id
奇怪的是这里的回复是:
{
"error": "invalid_client"
}
您正在使用 POST
方法,但您的请求正文不是有效的 application/x-www-form-urlencoded
文件。
查看如何将对象转换为 urlencoded 字符串并在此处发送:
根据规范,密码流需要用户凭据和客户端凭据。但我没有看到您的请求有授权 header。
我一直在尝试使用 Resource Owner Password Grant oAuth 登录,但我似乎无法正常工作。
我没有构建将请求发送到的后端,我正在使用 Invision Power Board's。我找不到任何使用简单 fetch
的示例请求,所以我不确定我是否做错了什么。
这是我发送给客户端的请求:
const form = {
'grant_type': 'password',
'username': 'username',
'password': 'pass',
'scope': 'profile',
'client_id': 'client_id',
}
var formBody = [];
for (var property in form) {
var encodedKey = encodeURIComponent(property);
var encodedValue = encodeURIComponent(form[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");
await fetch(`https://example.com/oauth/token`, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
body: formBody
})
我得到的只是一个错误:
{
"error": "invalid_request",
"error_description": "request must be a POST request"
}
我的格式设置有误还是我遗漏了什么?我一直在关注 oAuth 文档,但也许我误解了如何执行此操作。
我的服务器有问题吗?
编辑 - 使用 reqbin 的示例请求:
POST /oauth/token HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 85
grant_type=password&username=username&password=pass&scope=profile&client_id=client_id
奇怪的是这里的回复是:
{
"error": "invalid_client"
}
您正在使用 POST
方法,但您的请求正文不是有效的 application/x-www-form-urlencoded
文件。
查看如何将对象转换为 urlencoded 字符串并在此处发送:
根据规范,密码流需要用户凭据和客户端凭据。但我没有看到您的请求有授权 header。