我可以对oauth2使用“ PUT”请求吗? 我已经使用Javaservelet编写了REST API应用程序。 当我使用“ POST”请求时,将获得成功的access_token响应。
但是,当我使用“ PUT”请求时,出现以下错误。
{“ error_description”:“缺少grant_type参数值”,“ error”:“ invalid_request”}
我已经按照如下方式巧妙地配置了事物PUT请求和POST请求。
POST请求
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
handleGrants(request, response);
}
catch (Exception e)
{
response.getWriter().write("Error in Authentication System!! ");
logger.error("Failed trying to get tokens", e);
}
finally
{
response.getWriter().flush();
response.getWriter().close();
}
}
PUT请求
public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
handleGrants(request, response);
}
catch (Exception e)
{
response.getWriter().write("Error in Authentication System!! ");
logger.error("Failed trying to get tokens", e);
}
finally
{
response.getWriter().flush();
response.getWriter().close();
}
}
“ PUT”和“ POST”请求的我的身体参数如下。
答案 0 :(得分:2)
从给定的错误中,我能说的是您的 handleGrants 方法未获取请求正文。因此,它说不能确定拨款类型。可能是您应该调试并查看函数内部的参数用法。
无论如何,OAuth 2.0强制使用 POST 作为令牌端点。
客户端必须在制作访问令牌时使用HTTP“ POST”方法 请求。
因此,请遵循规范说明并使用POST。
附录
根据RFC2119
必须
此词,或术语“必需”或“外壳”,表示该定义是规范的绝对要求。