Sendgrid-nodejs: Die bereitgestellte Autorisierungsgewährung ist ungültig, abgelaufen oder widerrufen (401).

Erstellt am 1. Sept. 2016  ·  15Kommentare  ·  Quelle: sendgrid/sendgrid-nodejs

Problemzusammenfassung

Beim Senden einer E-Mail über die Nodejs V3-API wird die folgende Fehlermeldung angezeigt:

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

Diese Nachricht wird auf einer localhost-Instanz wie in einer Live-Server-Umgebung erzeugt.

Code-Auszug

Der folgende Code wird zum Senden der E-Mail verwendet:

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

Technische Details:

  • localhost: Windows 10 x64
  • Liveserver: Heroku
  • sendgrid-nodejs Version: 4.0.2
  • npm-Version: 3.7.5
  • Knotenversion: 4.4.5
help wanted question

Hilfreichster Kommentar

Ich habe ein neues Konto mit einem neuen API-SCHLÜSSEL mit genau demselben Code erstellt. Jetzt kann ich E-Mails senden, während das Warten auf Support ewig dauert.

Alle 15 Kommentare

Hi @ ninox92 ,

Dies bedeutet, dass ein Problem mit Ihrem API-Schlüssel vorliegt.

Überprüfen Sie zunächst den Wert von SENGRID_API_KEY

Wenden Sie sich dann an unser Support-Team unter https://support.sendgrid.com, damit es herausfinden kann, was mit den Berechtigungen Ihres API-Schlüssels nicht stimmt.

Vielen Dank!

SENGRID_API_KEY wurde überprüft und hat einen neu erstellten API-Schlüssel ausprobiert, aber auch dieselbe Fehlermeldung reproduziert.

Verwenden einer CURL POST-Anforderung zum Senden einer E-Mail Ich konnte jedoch erfolgreich eine E-Mail mit demselben API-Schlüssel senden.

Ich werde versuchen, den Support erneut zu kontaktieren.

Im Code , den Sie geschrieben, Sie haben SENGRID_API_KEY und ich denke , Sie bedeuten SENDGRID_API_KEY

Vielen Dank, dass Sie auf den Tippfehler des Variablennamens hingewiesen haben. Ich werde das ändern. Trotzdem wurde die Variable korrekt mit meinem API-Schlüssel gefüllt.

Ich habe es gerade noch einmal versucht und konnte nicht reproduzieren. Hier ist der Code, den ich verwendet habe:

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

Könnten Sie auch die für Sie geeignete cURL-Anfrage angeben?

Ich habe folgendes verwendet Hallo, Welt! Beispiel von der Seite Sendgrid Curl- Beispiele

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!"}]}'

Hallo @ ninox92 ,

Haben Sie versucht, das von mir bereitgestellte Codebeispiel zu verwenden?

Dieser Fehler bedeutet, dass Ihr API-Schlüssel nicht richtig festgelegt wird.

Wenn Sie keine Umgebungsvariablen verwenden, haben Sie:

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

Ich habe ein neues Konto mit einem neuen API-SCHLÜSSEL mit genau demselben Code erstellt. Jetzt kann ich E-Mails senden, während das Warten auf Support ewig dauert.

Vielen Dank für Ihr Follow-up. Ich bin froh, dass Sie einsatzbereit sind! Bitte lassen Sie uns wissen, wenn Sie auf andere Probleme stoßen.

Danke, es hilft mir sehr

Hallo Leute, ich habe ein Problem. Es gab mir den gleichen Fehler. Hier ist der Code, den ich benutze.

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

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

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

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

var helper = require ('sendgrid'). mail;
var fromEmail = new helper.Email ('[email protected] ');
var toEmail = new helper.Email ('[email protected] ');
var subject = 'Hallo Welt aus der SendGrid Node.js-Bibliothek!';
var content = new helper.Content ('text / plain', 'Hallo, E-Mail!');
var mail = new helper.Mail (von E-Mail, Betreff, E-Mail, Inhalt);

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

sg.API (Anfrage, Funktion (Fehler, Antwort) {
if (Fehler) {
console.log ('Fehlerantwort empfangen');
}}
console.log (response.statusCode);
console.log (response.body);
console.log (response.headers);
});

});

app.listen (port, function () {
console.log ("Abhören: *" + Port);
});

und in meiner .env.example Datei
SENDGRID_API_KEY = Code hier / * Ich habe den API-Code hier * /

Wenn Sie eine E-Mail per API mit Post-Methode senden müssen, sollten Sie Folgendes tun:

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

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

Entschuldigung für die Probleme, die jetzt funktionieren. Ich dachte, es wäre ein Fehler. Es war ein 202-Fehler. Es tut uns leid

Nur für alle, die das gleiche Problem haben wie ich. Wenn Sie eine der Client-Bibliotheken von SendGrid verwenden, stellen Sie sicher, dass diese auf dem neuesten Stand ist!

Ich habe die C # -Bibliotheksversion 9.9.0 und diesen Fehler aus heiterem Himmel behoben. Ich habe auf Version 9.10.0 aktualisiert und das Problem wurde behoben.

Interessanterweise hatte ich genau das gleiche Problem mit der C # Twilio-Bibliothek, das durch ein Update behoben wurde, ohne dass ich Code ändern musste. Nur ein Zufall, dass Twilio SendGrid erwirbt?

In meinem Fall war der nächste:

Meine IDE (Intellij CE 2020.10.3) hat meine Enviromet-Variable nicht korrekt erkannt, anstatt meinen Sendgrid-API-Schlüsselwert ej: SG.sddDDeq.qwt zu erhalten. Sie hat den Pfad zur .env-Datei ej: "C: / Users / Me / MyProjectRootFolder / sendgrid.env "und Bereitstellung für die Sendgrid-Anforderungsheader als" Authorization ":" Bearer C: /Users/Me/MyProjectRootFolder/sendgrid.env: "Welches Problem führt zu dem Fehler" Die bereitgestellte Autorisierung Zuschuss ist ungültig ... ".

Also ... versuchen Sie, Ihre Anforderungsheader zu debuggen und zu überprüfen, ob der angegebene Schlüssel gültig ist (Sie erkennen Ihre env-Variable), und Sie müssen außerdem eine Domänenauthentifizierung oder eine Überprüfung durch einen einzelnen Absender aus Ihrem SendGrid-Dashboard hinzufügen.

Hoffe das hilft jemandem.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

thinkingserious picture thinkingserious  ·  4Kommentare

wooyah picture wooyah  ·  4Kommentare

thidasapankaja picture thidasapankaja  ·  4Kommentare

amlcodes picture amlcodes  ·  4Kommentare

Loriot-n picture Loriot-n  ·  4Kommentare