Saltar al contenido

{“error”: “unsupported_grant_type”, “error_description”: “tipo de concesión no admitido”}

Solución:

Cambio:

request.setEndpoint('https://ap5.salesforce.com/services/oauth2/token');

a cualquiera Acceso o prueba dependiendo de si está en producción o sandbox

request.setEndpoint('https://[login | test].salesforce.com/services/oauth2/token');

También debe colocar los parámetros en el cuerpo o como parámetros de URL y no como encabezado

request.setBody(
      'grant_type=password' + 
      '&client_id=xxxx' + 
      '&client_secret=xx' + 
      '&username=xx' + 
      '&password=xx'
);

Ahora entendí el concepto y gracias por compartir otros enlaces.

client_id, client_secret, username, password and grant_type debe enviarse en un HTTP POST cuerpo no en el encabezado.

HttpRequest req = new HttpRequest();
req.setMethod('POST');
req.setHeader('Content-Type','application/x-www-form-urlencoded');
req.setEndpoint('https://ap5.salesforce.com/services/oauth2/token');

String CLIENT_ID = 'XXXXXXXXXXXXXXXXXXXXXXXXX';
String CLIENT_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXX';
String USERNAME = 'XXXXXXXXXXXXXX';
String PASSWORD = 'XXXXXXXXXXXXXX';

req.setBody('grant_type=password' + '&client_id='+CLIENT_ID + 
            '&client_secret="+CLIENT_SECRET + "&username="+USERNAME + "&password='+PASSWORD);

Http http = new Http();
HTTPResponse response = http.send(req);
System.debug('Body ' + response.getBody());
System.debug('Status ' + response.getStatus());
System.debug('Status code ' + response.getStatusCode());

Aquí está el resultado:
ingrese la descripción de la imagen aquí

Tuvo el mismo error (SalesForce 2020). Debajo Administrar aplicaciones conectadas, Tenía que asegurarme de que los ámbitos de OAuth seleccionados fueran los siguientes

  • Acceda y administre sus datos (api)
  • Proporcionar acceso a sus datos a través de la Web (web)
  • Permita el acceso a su identificador único (openid)

Para el servidor, tuve que asegurarme de estar usando mi propio dominio que puede seguir bajo

Setup / My Domain / Your Domain Name

NodeJS

const jsforce = require('jsforce');
const conn = new jsforce.Connection({
    loginUrl: 'https://......salesforce.com',
});

const username=".....";
const password = 'user_password' + 'user_security_token';
conn.login(username, password, function (err, userInfo) {
    if (err) { return console.error(err); } else {
        console.log('connected');
    }
});

Tenga en cuenta esa contraseña es una concatenación de la contraseña del usuario y el token de seguridad del usuario.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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