Sendgrid-nodejs: Pemberian otorisasi yang diberikan tidak valid, kedaluwarsa, atau dicabut (401)

Dibuat pada 1 Sep 2016  ·  15Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Ringkasan Masalah

Saat mengirim email menggunakan Nodejs V3 API, saya menerima pesan kesalahan berikut:

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

Pesan ini dihasilkan pada instance localhost seperti di lingkungan server langsung.

Cuplikan kode

Kode berikut digunakan untuk mengirim email:

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

Detail teknis:

  • localhost: Windows 10 x64
  • penyelamat: Heroku
  • sendgrid-nodejs Versi: 4.0.2
  • versi npm: 3.7.5
  • versi node: 4.4.5
help wanted question

Komentar yang paling membantu

Saya membuat akun baru dengan API KEY baru dengan kode yang sama persis. Sekarang saya bisa mengirim email sambil menunggu dukungan selamanya.

Semua 15 komentar

Hai @ nin92 ,

Ini berarti ada masalah dengan Kunci API Anda.

Pertama, harap verifikasi nilai SENGRID_API_KEY

Kemudian silakan hubungi tim dukungan kami di https://support.sendgrid.com sehingga mereka dapat menggali apa yang salah dengan izin Kunci API Anda.

Terima kasih!

SENGRID_API_KEY telah diverifikasi dan mencoba kunci API yang baru dibuat tetapi juga mereproduksi pesan kesalahan yang sama.

Dengan menggunakan permintaan CURL POST untuk mengirim email, saya berhasil mengirim email menggunakan kunci API yang sama.

Saya akan mencoba menghubungi dukungan sekali lagi.

Dalam kode yang Anda posting, Anda memiliki SENGRID_API_KEY dan menurut saya yang Anda maksud adalah SENDGRID_API_KEY

Terima kasih telah menunjukkan kesalahan ketik nama variabel. Saya akan mengubahnya. Namun demikian, variabel itu diisi dengan benar dengan kunci API saya.

Saya hanya mencoba lagi dan saya tidak dapat mereproduksi. Ini kode yang saya gunakan:

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

Bisakah Anda juga memberikan permintaan cURL yang bekerja untuk Anda?

Saya menggunakan Hello, World! contoh dari halaman contoh Sendgrid curl

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

Halo @ nin92 ,

Sudahkah Anda mencoba menggunakan contoh kode yang saya berikan?

Kesalahan itu berarti Kunci API Anda tidak disetel dengan benar.

Jika Anda tidak menggunakan variabel lingkungan, Anda akan memiliki:

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

Saya membuat akun baru dengan API KEY baru dengan kode yang sama persis. Sekarang saya bisa mengirim email sambil menunggu dukungan selamanya.

Terima kasih telah menindaklanjuti, saya senang Anda sudah siap! Beri tahu kami jika Anda mengalami masalah lain.

terima kasih banyak membantu saya

hai teman-teman saya mengalami masalah itu memberi saya kesalahan yang sama inilah kode yang saya gunakan.

const express = membutuhkan ('express');
aplikasi const = express ();

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

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

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

var helper = membutuhkan ('sendgrid']. mail;
var fromEmail = new helper.Email ('[email protected] ');
var toEmail = new helper.Email ('[email protected] ');
var subject = 'Halo Dunia dari Perpustakaan SendGrid Node.js!';
var content = new helper.Content ('text / plain', 'Hello, Email!');
var mail = new helper.Mail (fromEmail, subject, toEmail, content);

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

sg.API (permintaan, fungsi (kesalahan, respons) {
jika (kesalahan) {
console.log ('Tanggapan kesalahan diterima');
}
console.log (response.statusCode);
console.log (response.body);
console.log (response.headers);
});

});

app.listen (port, function () {
console.log ("Mendengarkan: *" + port);
});

dan di file .env.example saya
SENDGRID_API_KEY = kode di sini / * Saya punya kode API di sini * /

jika Anda perlu mengirim email melalui api dengan metode posting Anda harus melakukan seperti ini:

var helper = membutuhkan ('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 = router;

Maaf atas masalah ini bekerja sekarang saya pikir itu adalah kesalahan itu adalah kesalahan 202. Maaf

Hanya untuk siapa saja yang memiliki masalah yang sama dengan saya. Jika Anda menggunakan salah satu pustaka klien SendGrid, pastikan sudah mutakhir!

Saya menggunakan C # library versi 9.9.0 dan mulai mendapatkan kesalahan ini tiba-tiba. Saya memperbarui ke versi 9.10.0 dan itu menyelesaikan masalah.

Menariknya, saya memiliki masalah yang persis sama dengan pustaka C # Twilio yang pembaruannya diselesaikan tanpa saya harus mengubah kode apa pun. Hanya kebetulan dengan Twilio mendapatkan SendGrid?

Dalam kasus saya adalah yang berikutnya:

IDE saya (Intellij CE 2020.10.3) tidak mengenali variabel enviromet saya dengan benar, alih-alih mendapatkan nilai kunci sendgrid api ej: SG.sddDDeq.qwt, ia mengambil jalur ke file .env, ej: "C: / Users / Saya / MyProjectRootFolder / sendgrid.env "dan memberikannya ke Header permintaan Sendgrid sebagai" Otorisasi ":" Bearer C: /Users/Me/MyProjectRootFolder/sendgrid.env: "yang merupakan masalah yang mengarah ke kesalahan" Otorisasi yang diberikan hibah tidak valid ... ".

Soo ... coba debug header yang Anda minta dan verifikasi bahwa kunci yang diberikan valid (Anda mengenali variabel env Anda), dan Anda juga perlu menambahkan Autentikasi Domain atau Verifikasi Pengirim Tunggal dari Dasbor SendGrid Anda.

Semoga ini membantu seseorang.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat