Estoy tratando de construir una aplicación usando autodesk-forge - api's. Para empezar, creé una aplicación dentro de mi configuración de Autodesk para recibir un "ClientID" y un "Client Secret" que son necesarios para realizar llamadas a la API.

De alguna manera, cuando intento usar la createBucket - llamada API, que es documentet aquí obtengo una respuesta bad request 400 y no sé por qué.

Aquí está mi llamada a la API:

let oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(clientId, 
  clientSecret, [
  'data:read',
  'data:write',
  'bucket:create',
  'bucket:read',
  'data:write',
  'data:read',
  'viewables:read'           
], autoRefresh);

oAuth2TwoLegged.authenticate().then(function(credentials){

  var HubsApi = new ForgeSDK.HubsApi(); //Hubs Client
  var BucketsApi = new ForgeSDK.BucketsApi(); //Buckets Client

  BucketsApi.createBucket({bucketKey :"Test", policyKey: "transient"},{}, oAuth2TwoLegged, credentials).then((response) => {
    console.log(' new BUCKET: ', response)
  }).catch((err) => {
    console.log('ERROR BLA: ', err)
  });

}).catch((err) => {
  console.log('oauth error: ', err)
})

¿Alguien tiene una sugerencia de lo que podría estar haciendo mal?

Cuando uso una llamada diferente, por ejemplo, esta:

BucketsApi.getBuckets({}, oAuth2TwoLegged, credentials).then(function(response){
   console.log('buckets: ', response.body);
  }, function(err){
    console.error(err);
});

Funciona...

EDITAR

Si hago lo siguiente:

BucketsApi.createBucket(xyda_select_rtl, {'bucketKey' :'xyda_select_rtl', 
   'policyKey': 'transient'}, oAuth2TwoLegged, credentials).then((response) => {
    console.log(' new BUCKET: ', response)
  }).catch((err) => {
    console.log('ERROR BLA: ', err)
});

Me sale xyda_select_rtl no está definido!?!

Cuando agrego:

var xyda_select_rtl;

Recibo el error Missing the required parameter 'postBuckets' when calling createBucket

Ehhm .... sí: - /

0
ST80 13 nov. 2017 a las 11:24

2 respuestas

La mejor respuesta

Necesita encontrar un nombre único para sus depósitos, lo siento por las malas noticias. No es tan malo lo que piensas. Por ejemplo, simplemente agregue su client_id al nombre del depósito:

"test-tAp1fqjjtcgqS4CKpCYDjAyNbKW4IVCC"

O use una guía aleatoria generada por código:

function guid() {

    var d = new Date().getTime();

    var guid = 'xxxx-xxxx-xxxx'.replace(
      /[xy]/g,
      function (c) {
        var r = (d + Math.random() * 16) % 16 | 0;
        d = Math.floor(d / 16);
        return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);
      });

    return guid;
  }

Luego utilícelo para generar un nombre de depósito:

var bucketKey = "test-" + guid()
1
Philippe 13 nov. 2017 a las 15:17

Parece que su clave de depósito está duplicada o su identificación de cliente y su secreto de cliente tienen caracteres no válidos. Verifique esos parámetros en su aplicación. Y el nombre del Bucket, es decir. la clave del depósito debe ser única global. Si el nombre que pasó a la publicación / depósitos existe, también obtendrá un error. Te sugiero que uses el patrón de nomenclatura de esta manera:

Test + { Your Bucket Key }

Espero que ayude.

0
Eason Kang 13 nov. 2017 a las 13:20