获取Oauth2令牌时“必须指定grant_type字段”错误

时间:2015-07-02 21:15:40

标签: angularjs node.js oauth-2.0 restify

我使用 OAuth2 授权(restify-oauth2插件)在 Restify 上构建了一个简单的 node.js 后端。

我在请求令牌时遇到问题。当我使用我的REST客户端调用POST方法时,一切正常,我得到access_tokentoken_type

当我尝试在 Angular 中制作的前端应用程序中执行相同操作时,会出现问题。

这是我的代码:

 var req = {
     method: 'POST',
     url: 'http://localhost:8080/token',
     headers: headers,
     data: {},
     params: {grant_type: "client_credentials"}
 };

 $http(req).success(function(data, status, headers, config){
     console.log('success');
 }).error(function(data, status, headers, config){
     console.log('error');
 });

如您所见,提供了grant_type参数。但是服务器仍然响应:

{"error":"invalid_request","error_description":"Must specify grant_type field."}

这是devtools截图:

enter image description here

我如何更改请求以使其正常工作?

1 个答案:

答案 0 :(得分:0)

我终于解决了它。问题是grant_type字段必须在请求体内传递,而不是在参数中传递。

工作申请代码:

var req = {
  method: 'POST',
  url: 'http://localhost:8080/token',
  headers: headers,
  data: "grant_type=client_credentials"
};

$http(req).success(function(data, status, headers, config){
  console.log('success');
}).error(function(data, status, headers, config){
  console.log('error');
});