Restangular - 不支持Client_credentials授权类型?

时间:2016-08-30 17:18:28

标签: javascript angularjs oauth oauth-2.0 restangular

以下代码无法正常工作。授权类型是" client_credentials"。它返回状态为-1的null响应。 API没问题。这两个请求都适用于邮递员

var currentLocationdeferred = $q.defer();
var addressLocationdeferred = $q.defer();

currentLocationGeo.on("key_entered", function (key, location, distance) {
});

addressLocationGeo.on("key_entered", function (key, location, distance) {
});

currentLocationGeo.on("ready", function () {
    currentLocationdeferred.resolve('any result');
});

addressLocationGeo.on("ready", function () {
    addressLocationdeferred.resolve('any result 2');
});

$q.all([currentLocationdeferred.promise, addressLocationdeferred.promise]).then(function(result){
    // result[0] == 'any result'
    // result[1] == 'any result 2'
    finalGeo.push(eachLocation);
})

以下代码与"密码"完美配合授予类型。

function authentication(user) {
            return Restangular
                .all('token')
                .post('grant_type=client_credentials&client_id=' + APPLICATION.clientId + '&client_secret=' + 'XYZ',
                undefined, { 'Content-Type': 'application/x-www-form-urlencoded' });
        }

有什么问题?

1 个答案:

答案 0 :(得分:0)

您似乎正在使用相同的client_id拨打这些电话。第二个工作示例显示客户端是所谓的“公共客户端”,因为它在没有身份验证的情况下标识自己。您的第一个示例需要一个机密客户端,因为客户端需要在client_credentials流中进行身份验证。这两者不能混合,因此看起来您的客户端在授权服务器上注册为公共客户端,因此根据定义它不能使用客户端凭据授权类型。