autenticación a través de javascript

Un usuario Pregunto ✅

alejandro

¡Hola a todos!

alguien sabe como hacer el proceso de autenticación por javascript, porque el ejemplo de la documentación esta hecho en C#. Si alguien tiene algo sería útil! Gracias

fso

Hola, he hecho esto usando Google Apps Script, que es básicamente Javascript.
No soy un desarrollador, así que estoy seguro de que hay formas mejores/diferentes, pero funciona, y tal vez te guíe en la dirección correcta.
Para obtener un token de actualización válido, tengo que iniciar sesión manualmente una vez.

function pbiInitialAuth(){
var base = "https://login.windows.net/common/oauth2/authorize";
var rtype = "?response_type=code";
var clientID = "&client_id=" + pbiClientID();
var resource = "&resource=https://analysis.windows.net/powerbi/api&redirect_uri=http://localhost:13526/Redirect";
var clientSecret = "&client_secret=" + pbiClientSecret();
var url = base + rtype + clientID + resource + clientSecret;
Logger.log(url);
}

La variable url contiene una URL que puede abrir en Firefox e ingresar sus datos de inicio de sesión.
La URL a la que será redirigido contiene un parámetro &code=… Este es el token de actualización.
Una vez que tenga eso, puede obtener automáticamente nuevos tokens de acceso usando algo como esto:

function pbiAccessToken(){
  
  var code = pbiRefreshTokenValue();
  var clientID = pbiClientID();
  var clientSecret = pbiClientSecret();
  var url = "https://login.microsoftonline.com/common/oauth2/token";
  var redirect = "http://localhost:13526/Redirect";
  
  var payload =
   {
     "client_id" : clientID,
     "client_secret" : clientSecret,
     "code": code,
     "grant_type": "authorization_code",
     "redirect_uri": redirect
   };
  
  
  var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
  };
  
  
  var options = {
    'method': 'post',
    'headers': headers,
    'payload': payload
  };
  
  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response);
  return data.access_token;
}

Espero que ayude, funciona para mí.

alejandro

En respuesta a fso

Hola, @fso gracias por tu respuesta es muy útil. Estoy en la misma situación que usted porque no soy desarrollador, pero entiendo que su primera función crea el enlace para ir al sitio de inicio de sesión e ingresar las credenciales de inicio de sesión para obtener el token de acceso. pero mi pregunta es como hago para guardar el token de acceso generado en una variable?

fso

En respuesta a alejandro

@alexanderg, una vez que haya iniciado sesión correctamente, será redirigido a una URL que contiene un parámetro &code=…
Este código después del símbolo igual es el token de actualización. Simplemente lo copio manualmente y lo almaceno codificado en una variable como

var refreshToken = "AAAAbbbCCC-aaaa-ssss--dddd";

No tengo una solución programática para esto, pero también descubrí que dado que puede solicitar nuevos tokens de acceso con ese token de actualización, nunca tuve que volver a ingresar el código nuevamente. Entonces, para mí, simplemente sigue funcionando.

jasondunbar

En respuesta a fso

Nosotros (nuestra organización) acabamos de implementar esto recientemente.

Si bien es posible que no pueda compartir el código con usted, al menos podría intentar compartir la arquitectura, la configuración y los paquetes utilizados. Ten paciencia conmigo y te responderé con algo.

j

alejandro

En respuesta a jasondunbar

gracias @JasonDunbar, ¡cualquier contribución sería muy útil!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *