Busca de DataSet Oauth não funciona

Tenho um código de busca de DataSet para ser utilizado em um Widget em uma página pública:


        var dsName = "wdgCardapioDias";
        var fields = null;
        var constraints = new Array(DatasetFactory.createConstraint("dtCardapio", "2017-06-05","2017-06-09", ConstraintType.MUST));
        var orders = new Array("dtCardapio");
        var token = { key: Cardapio.dsTokem, secret: Cardapio.dsSecret };
        var consumer = { key: 'cardapio', secret: 'cardapio' };     

        var oauth = OAuth({
            consumer: consumer,
            signature_method: 'HMAC-SHA1',
            hash_function: function(base_string, key) { return CryptoJS.HmacSHA1(base_string, key).toString(CryptoJS.enc.Base64); },
            nonce_length: 6
        });

        var request_data = {
            url: WCMAPI.serverURL+'/api/public/ecm/dataset/datasets',
            method: 'POST',
            data: { name: dsName, fields: fields, constraints: constraints, order: orders }
        };

        var ret = null;
        $.ajax({
            url: request_data.url,
            crossDomain: true,
            async: false,
            type: request_data.method,        
            data: JSON.stringify(oauth.authorize(request_data, token)),
            contentType: "application/json"
        }).done(function(data) {
            ret = data.content;
        });

Ele funciona como o vcXMLRPC, porém utilizando Oauth. Quando eu estou com um usuário logado funciona perfeitamente, porém quando estou em uma página pública ele dá o erro wcm_global_en_US.js?v=f1.6.0-EP3:3 POST /api/public/ecm/dataset/datasets 401 (Unauthorized).

O que posso fazer para utilizá-lo em uma página publica?

Boa tarde!!

Separa o json do dataset do objeto request.data.


var request_data = {
            url: WCMAPI.serverURL+'/api/public/ecm/dataset/datasets',
            method: 'POST'
        };
var data = { name: dsName, fields: fields, constraints: constraints, order: orders };

E na chamada faça o seguinte, adiciona a requisição no header


$.ajax({
            url: request_data.url,
            crossDomain: true,
            async: false,
            type: request_data.method,        
            data: JSON.stringify(data),
            headers: oauth.toHeader(oauth.authorize(request_data, token)),
            contentType: "application/json"
        }).done(function(data) {
            ret = data.content;
        });

Teste


loadDataset2: function() {
        var oauth = OAuth({
            consumer: {
                key: '',
                secret: ''
            },
            signature_method: 'HMAC-SHA1',
            hash_function: function(base_string, key) {
                return CryptoJS.HmacSHA1(base_string, key).toString(CryptoJS.enc.Base64);
            },
            nonce_length: 6
        });

        var request_data = {
            url: 'http://host:port/api/public/ecm/dataset/datasets',
            method: 'POST'
        };

        var data = {
            "name":"colleague",
            "fields": [],
            "constraints": [{"_field": "colleagueId", "_finalValue": "01_100060", "_initialValue": "01_100060", "_type": 1}],
            "order": []
        };

        var token = {
            key: '',
            secret: ''
        };

        $.ajax({
            url: request_data.url,
            contentType: 'application/json',
            crossDomain: true,
            async: true,
            type: request_data.method,
            data: JSON.stringify(data),
            //data: oauth.authorize(request_data, token)
            headers: oauth.toHeader(oauth.authorize(request_data, token))
        }).done(function(data) {

        });
    }

continua com o mesmo erro 401

Testei aqui antes de responder, e funciona perfeitamente! Vou adicionar na resposta meu teste!

Descobri o que era, o usuário do Outh foi bloqueado. Funcionou obrigado.

Utiliza o exemplo dessa pergunta, Acessar DataSource privado em página publica

Bom dia Pessoal, estou precisando fazer a mesma coisa, mas não preciso do oAuth.

Só preciso alterar disso: headers: oauth.toHeader(oauth.authorize(request_data, token))
pra isso: headers: oauth.toHeader(oauth.authorize(request_data)) ?