Sendgrid-nodejs: La concesión de autorización proporcionada es inválida, vencida o revocada (401)

Creado en 1 sept. 2016  ·  15Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

Resumen de asuntos

Al enviar un correo electrónico usando la API de Nodejs V3, recibo el siguiente mensaje de error:

{ 
    [SendGridError: Response error] message: 'Response error' } 
    { 
        statusCode: 401, 
        body: '{"errors":[{"message":"The provided authorization grant is invalid, expired, or revoked","field":null,"help":null}]}', 
        headers: { 
            server: 'nginx', 
            date: 'Wed, 31 Aug 2016 18:34:49 GMT', 
            'content-type': 'application/json', 
            'content-length': '116', 
            connection: 'close', 
            'x-frame-options': 'DENY'
        } 
    }
}

Este mensaje se produce en una instancia de localhost como en un entorno de servidor en vivo.

Fragmento de código

El siguiente código se utiliza para enviar el correo electrónico:

var helper = require('sendgrid').mail,
sg = require('sendgrid')(SENDGRID_API_KEY);

var from_email = new helper.Email('[email protected]');
var to_email = new helper.Email(myOwnEmail);
var subject = 'Subject';
var content = new helper.Content('text/plain', 'test');
var mail = new helper.Mail(from_email, subject, to_email, content);

var request = sg.emptyRequest({
    method: 'POST',
    path: '/v3/mail/send',
    body: mail.toJSON()
});

sg.API(request, function(err, response) {
    console.log(err, response);
    if (!err) {
        res.send({
            message: 'An email has been sent to the provided email with further instructions.'
        });
    } else {
        return res.status(400).send({
            message: 'Failure sending email'
        });
    }
});

Detalles técnicos:

  • localhost: Windows 10 x64
  • servidor en vivo: Heroku
  • sendgrid-nodejs Versión: 4.0.2
  • versión npm: 3.7.5
  • versión del nodo: 4.4.5
help wanted question

Comentario más útil

Creé una nueva cuenta con una nueva CLAVE API con exactamente el mismo código. Ahora puedo enviar correos electrónicos mientras espero que el soporte sea eterno.

Todos 15 comentarios

Hola @ ninox92 ,

Esto significa que hay un problema con su clave API.

Primero, verifique el valor de SENGRID_API_KEY

Luego, comuníquese con nuestro equipo de soporte en https://support.sendgrid.com para que puedan investigar qué está mal con los permisos de su clave API.

¡Gracias!

SENGRID_API_KEY se verificó y probó una clave API recién creada, pero también reprodujo el mismo mensaje de error.

Usando una solicitud CURL POST para enviar un correo electrónico, aunque pude enviar un correo electrónico con éxito usando la misma clave API.

Intentaré ponerme en contacto con soporte una vez más.

En el código que publicaste, tienes SENGRID_API_KEY y creo que te refieres a SENDGRID_API_KEY

Gracias por señalar el error tipográfico del nombre de la variable. Cambiaré eso. Sin embargo, la variable se completó correctamente con mi clave API.

Lo intenté de nuevo y no pude reproducirlo. Aquí está el código que usé:

var helper = require('sendgrid').mail;
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY);

var from_email = new helper.Email('[email protected]');
var to_email = new helper.Email('[email protected]');
var subject = 'Subject';
var content = new helper.Content('text/plain', 'test');
var mail = new helper.Mail(from_email, subject, to_email, content);

var request = sg.emptyRequest({
  method: 'POST',
  path: '/v3/mail/send',
  body: mail.toJSON(),
});

sg.API(request, function(err, response) {
  console.log(response.statusCode);
  console.log(response.body);
  console.log(response.headers);
});

¿Podría también proporcionar la solicitud cURL que le funcione?

Usé el siguiente Hello, World! ejemplo de la página de ejemplos de curl de Sendgrid

curl --request POST \
  --url https://api.sendgrid.com/v3/mail/send \
  --header 'Authorization: Bearer SENDGRID_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"personalizations": [{"to": [{"email": "<my-own-email>"}]}],"from": {"email": "[email protected]"},"subject": "Hello, World!","content": [{"type": "text/plain", "value": "Heya!"}]}'

Hola @ ninox92 ,

¿Ha intentado utilizar el ejemplo de código que le proporcioné?

Ese error significa que su clave API no se está configurando correctamente.

Si no está utilizando variables de entorno, tendría:

var sg = require('sendgrid')('SG.XXXXXXXXXXXXXXXXXXX');

Creé una nueva cuenta con una nueva CLAVE API con exactamente el mismo código. Ahora puedo enviar correos electrónicos mientras espero que el soporte sea eterno.

Gracias por hacer un seguimiento, ¡me alegra que esté funcionando! Háganos saber si tiene algún otro problema.

gracias me ayuda mucho

hola chicos estoy teniendo un problema me dio el mismo error aquí está el código que uso.

const express = require ('express');
aplicación constante = express ();

var sg = require ('sendgrid') (process.env.SENDGRID_API_KEY);

var port = process.env.PORT || 8080;

app.get ('/', function (req, res) {

var helper = require ('sendgrid'). mail;
var fromEmail = new helper.Email ('[email protected]');
var toEmail = new helper.Email ('[email protected] ');
var subject = '¡Hola mundo de la biblioteca SendGrid Node.js!';
var content = new helper.Content ('texto / plano', '¡Hola, correo electrónico!');
var mail = new helper.Mail (fromEmail, asunto, toEmail, contenido);

var request = sg.emptyRequest ({
método: 'POST',
ruta: '/ v3 / mail / send',
cuerpo: mail.toJSON ()
});

sg.API (solicitud, función (error, respuesta) {
if (error) {
console.log ('Respuesta de error recibida');
}
console.log (response.statusCode);
console.log (respuesta.cuerpo);
console.log (response.headers);
});

});

app.listen (puerto, función () {
console.log ("Escuchando: *" + puerto);
});

y en mi archivo .env.example
SENDGRID_API_KEY = código aquí / * tengo el código API aquí * /

si necesita enviar un correo electrónico a través de la API con el método de publicación, debe hacer lo siguiente:

var helper = require ('sendgrid'). mail;

router.post ('/', function (req, res) {

var sg=require('sendgrid')('your api key from your account');
var formEmail= new helper.Email('[email protected]');
var toEmail= new helper.Email(req.body.mail);
var subject='text';
var content = new helper.Content('text/plain', 'Your password has been successfully changed');

var mail = new helper.Mail(formEmail, subject, toEmail, content);

var request =sg.emptyRequest({
    method:'POST',
    path: '/v3/mail/send',
    body: mail.toJSON()
});

sg.API(request , function (error , response) {
    if(error){

        console.log('Error response not valid');

    }
});

})

module.exports = enrutador;

Perdón por el problema, ahora funciona, pensé que era un error, era un error 202. Lo siento

Solo para cualquiera que tenga el mismo problema que yo. Si está utilizando una de las bibliotecas cliente de SendGrid, asegúrese de que esté actualizada.

Estaba usando la versión de la biblioteca C # 9.9.0 y comencé a recibir este error de la nada. Actualicé a la versión 9.10.0 y resolvió el problema.

Curiosamente, tuve exactamente el mismo problema con la biblioteca C # Twilio que una actualización resolvió sin que tuviera que cambiar ningún código. ¿Es solo una coincidencia que Twilio haya adquirido SendGrid?

En mi caso fue el siguiente:

Mi IDE (Intellij CE 2020.10.3) no estaba reconociendo mi variable de entorno correctamente, en lugar de obtener el valor de la clave de la API de Sendgrid ej: SG.sddDDeq.qwt, estaba tomando la ruta al archivo .env, ej: "C: / Users / Me / MyProjectRootFolder / sendgrid.env "y proporcionándolo a los Encabezados de solicitud de Sendgrid como" Autorización ":" Portador C: /Users/Me/MyProjectRootFolder/sendgrid.env: "cuál es el problema que lleva al error" La autorización proporcionada la concesión no es válida ... ".

Entonces ... intente depurar los encabezados de su solicitud y verifique que la clave proporcionada sea válida (reconoce su variable env), y también debe agregar una Autenticación de dominio o Verificación de remitente único desde su Panel de control de SendGrid.

Espero que esto ayude a alguien.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

wooyah picture wooyah  ·  4Comentarios

thinkingserious picture thinkingserious  ·  4Comentarios

danielflippance picture danielflippance  ·  4Comentarios

zvone187 picture zvone187  ·  4Comentarios

Loriot-n picture Loriot-n  ·  4Comentarios