Sendgrid-nodejs: L'octroi d'autorisation fourni est invalide, expiré ou révoqué (401)

Créé le 1 sept. 2016  ·  15Commentaires  ·  Source: sendgrid/sendgrid-nodejs

Résumé de la question

Lors de l'envoi d'un e-mail à l'aide de l'API Nodejs V3, je reçois le message d'erreur suivant:

{ 
    [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'
        } 
    }
}

Ce message est produit sur une instance localhost comme dans un environnement de serveur en direct.

Extrait de code

Le code suivant est utilisé pour envoyer l'e-mail:

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'
        });
    }
});

Détails techniques:

  • localhost: Windows 10 x64
  • serveur de vies: Heroku
  • sendgrid-nodejs Version: 4.0.2
  • version npm: 3.7.5
  • version du nœud: 4.4.5
help wanted question

Commentaire le plus utile

J'ai créé un nouveau compte avec une nouvelle clé API avec exactement le même code. Maintenant, je suis en mesure d'envoyer des e-mails en attendant que l'assistance prenne une éternité.

Tous les 15 commentaires

Salut @ ninox92 ,

Cela signifie qu'il y a un problème avec votre clé API.

Tout d'abord, veuillez vérifier la valeur de SENGRID_API_KEY

Veuillez ensuite contacter notre équipe d'assistance à l' adresse https://support.sendgrid.com afin qu'elle puisse découvrir ce qui ne va pas avec les autorisations de votre clé API.

Merci!

SENGRID_API_KEY a été vérifié et a essayé une clé API nouvellement créée, mais a également reproduit le même message d'erreur.

En utilisant une demande CURL POST pour envoyer un e-mail, j'ai pu envoyer un e-mail avec succès en utilisant la même clé API.

Je vais essayer de contacter à nouveau le support.

Dans le code que vous avez posté, vous avez SENGRID_API_KEY et je pense que vous vouliez dire SENDGRID_API_KEY

Merci d'avoir signalé la faute de frappe du nom de la variable. Je vais changer ça. Néanmoins, la variable a été correctement remplie avec ma clé API.

J'ai juste réessayé et je n'ai pas pu reproduire. Voici le code que j'ai utilisé:

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);
});

Pourriez-vous également fournir la demande cURL qui fonctionne pour vous?

J'ai utilisé le Hello, World! exemple de la page d' exemples de curl 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!"}]}'

Bonjour @ ninox92 ,

Avez-vous essayé d'utiliser l'exemple de code que j'ai fourni?

Cette erreur signifie que votre clé API n'est pas définie correctement.

Si vous n'utilisez pas de variables d'environnement, vous auriez:

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

J'ai créé un nouveau compte avec une nouvelle clé API avec exactement le même code. Maintenant, je suis en mesure d'envoyer des e-mails en attendant que l'assistance prenne une éternité.

Merci pour le suivi, je suis heureux que vous soyez opérationnel! Veuillez nous informer si vous rencontrez d'autres problèmes.

merci ça m'aide beaucoup

salut les gars, j'ai un problème, cela m'a donné la même erreur, voici le code que j'utilise.

const express = require ('express');
const app = express ();

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

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

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

var helper = require ('sendgrid'). mail;
var fromEmail = nouveau helper.Email ('[email protected] ');
var toEmail = nouveau helper.Email ('[email protected] ');
var subject = 'Hello World de la bibliothèque SendGrid Node.js!';
var content = new helper.Content ('text / plain', 'Hello, Email!');
var mail = new helper.Mail (fromEmail, objet, toEmail, contenu);

var request = sg.emptyRequest ({
méthode: 'POST',
chemin: '/ v3 / mail / envoyer',
corps: mail.toJSON ()
});

sg.API (requête, fonction (erreur, réponse) {
if (erreur) {
console.log ('Réponse d'erreur reçue');
}
console.log (response.statusCode);
console.log (response.body);
console.log (response.headers);
});

});

app.listen (port, fonction () {
console.log ("Écoute de: *" + port);
});

et sur mon fichier .env.example
SENDGRID_API_KEY = code ici / * J'ai le code API ici * /

si vous devez envoyer un e-mail via une API avec une méthode de publication, procédez comme suit:

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

router.post ('/', fonction (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 = routeur;

Désolé pour le problème, cela fonctionne maintenant, je pensais que c'était une erreur, c'était une erreur 202. Pardon

Juste pour tous ceux qui ont le même problème que moi. Si vous utilisez l'une des bibliothèques clientes de SendGrid, assurez-vous qu'elle est à jour!

J'utilisais la version de bibliothèque C # 9.9.0 et j'ai commencé à obtenir cette erreur à l'improviste. J'ai mis à jour vers la version 9.10.0 et cela a résolu le problème.

Fait intéressant, j'ai eu exactement le même problème avec la bibliothèque C # Twilio qu'une mise à jour a résolu sans que je doive changer de code. Juste une confiance avec Twilio acquérant SendGrid?

Dans mon cas, c'était le suivant:

Mon IDE (Intellij CE 2020.10.3) ne reconnaissait pas correctement ma variable d'enviromet, au lieu d'obtenir ma valeur de clé api sendgrid ej: SG.sddDDeq.qwt, il prenait le chemin du fichier .env, ej: "C: / Users / Me / MyProjectRootFolder / sendgrid.env "et le fournir à la requête Sendgrid Headers comme" Authorization ":" Bearer C: /Users/Me/MyProjectRootFolder/sendgrid.env: "quel est le problème qui conduit à l'erreur" L'autorisation fournie la subvention n'est pas valide ... ".

Soo ... essayez de déboguer vos en-têtes de demande et vérifiez que la clé fournie est valide (vous reconnaissez votre variable env), et vous devez également ajouter une authentification de domaine ou une vérification d'expéditeur unique à partir de votre tableau de bord SendGrid.

J'espère que cela aidera quelqu'un.

Cette page vous a été utile?
0 / 5 - 0 notes