Sendgrid-nodejs: منحة التفويض المقدمة غير صالحة أو منتهية الصلاحية أو ملغاة (401)

تم إنشاؤها على ١ سبتمبر ٢٠١٦  ·  15تعليقات  ·  مصدر: sendgrid/sendgrid-nodejs

ملخص القضية

عند إرسال بريد إلكتروني باستخدام Nodejs V3 API ، أتلقى رسالة الخطأ التالية:

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

يتم إنتاج هذه الرسالة على مثيل مضيف محلي كما هو الحال في بيئة خادم مباشر.

مقتطف الشفرة

يتم استخدام الكود التالي لإرسال البريد الإلكتروني:

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

تفاصيل تقنية:

  • المضيف المحلي: Windows 10 x64
  • لايف سيرفر: هيروكو
  • Sendgrid-nodejs الإصدار: 4.0.2
  • إصدار npm: 3.7.5
  • إصدار العقدة: 4.4.5
help wanted question

التعليق الأكثر فائدة

لقد أنشأت حسابًا جديدًا باستخدام API KEY جديد بنفس الرمز بالضبط. الآن أنا قادر على إرسال رسائل البريد الإلكتروني أثناء انتظار الدعم الذي يستغرق وقتًا طويلاً.

ال 15 كومينتر

مرحبًا @ ninox92 ،

هذا يعني أن هناك مشكلة في مفتاح API الخاص بك.

أولاً ، يرجى التحقق من قيمة SENGRID_API_KEY

ثم يرجى الاتصال بفريق الدعم الخاص بنا على https://support.sendgrid.com حتى يتمكنوا من البحث عن الخطأ في أذونات API Key الخاصة بك.

شكر!

تم التحقق من SENGRID_API_KEY وحاول استخدام مفتاح واجهة برمجة تطبيقات تم إنشاؤه حديثًا ولكن تم أيضًا إعادة إنتاج نفس رسالة الخطأ.

باستخدام طلب CURL POST لإرسال بريد إلكتروني على الرغم من أنني تمكنت من إرسال بريد إلكتروني بنجاح باستخدام نفس مفتاح API.

سأحاول الاتصال بالدعم مرة أخرى.

في الكود الذي نشرته ، لديك SENGRID_API_KEY وأعتقد أنك تقصد SENDGRID_API_KEY

شكرا لك على الإشارة إلى اسم المتغير الخطأ المطبعي. سوف أغير ذلك. ومع ذلك ، تم ملء المتغير بشكل صحيح بمفتاح API الخاص بي.

لقد حاولت مرة أخرى ولم أستطع التكاثر. هذا هو الكود الذي استخدمته:

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

هل يمكنك أيضًا تقديم طلب cURL الذي يناسبك؟

لقد استخدمت ما يلي Hello، World! مثال من صفحة أمثلة حليقة 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!"}]}'

مرحبا @ ninox92 ،

هل حاولت استخدام نموذج التعليمات البرمجية الذي قدمته؟

يعني هذا الخطأ أن مفتاح API الخاص بك لم يتم ضبطه بشكل صحيح.

إذا كنت لا تستخدم متغيرات البيئة ، سيكون لديك:

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

لقد أنشأت حسابًا جديدًا باستخدام API KEY جديد بنفس الرمز بالضبط. الآن أنا قادر على إرسال رسائل البريد الإلكتروني أثناء انتظار الدعم الذي يستغرق وقتًا طويلاً.

شكرًا على المتابعة ، أنا سعيد لأنك تعمل! يرجى إعلامنا إذا واجهت أي مشاكل أخرى.

شكرا لك انها تساعدني كثيرا

مرحبًا يا رفاق ، أواجه مشكلة ، لقد أعطاني نفس الخطأ هنا الرمز الذي أستخدمه.

const صريحة = تتطلب ('صريحة') ؛
تطبيق const = express () ؛

var sg = يتطلب ('sendgrid') (process.env.SENDGRID_API_KEY) ،

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

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

var helper = يتطلب ('sendgrid'). mail ؛
var fromEmail = new helper.Email ('[email protected] ') ؛
var toEmail = new helper.Email ('[email protected] ') ؛
var subject = 'Hello World من مكتبة SendGrid Node.js!'؛
var content = new helper.Content ('نص / عادي'، 'مرحبًا ، بريد إلكتروني!') ؛
var mail = new helper.Mail (fromEmail ، الموضوع ، إلى البريد الإلكتروني ، المحتوى) ؛

طلب var = sg.emptyRequest ({
الطريقة: "POST" ،
المسار: '/ v3 / mail / send' ،
نص: mail.toJSON ()
}) ؛

sg.API (طلب ، وظيفة (خطأ ، استجابة) {
إذا (خطأ) {
console.log ('تلقي استجابة خطأ') ؛
}
console.log (response.statusCode) ؛
console.log (response.body) ؛
console.log (response.headers) ؛
}) ؛

}) ؛

app.listen (المنفذ ، الوظيفة () {
console.log ("الاستماع إلى: *" + المنفذ)؛
}) ؛

وعلى ملف env.example الخاص بي
SENDGRID_API_KEY = رمز هنا / * لدي رمز API هنا * /

إذا كنت بحاجة إلى إرسال بريد إلكتروني عبر api باستخدام methode بعد النشر ، فيجب عليك القيام بذلك:

var helper = يتطلب ('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 = جهاز التوجيه ؛

آسف على مشكلة عملها الآن اعتقدت أنه كان خطأ كان خطأ 202. آسف

فقط لأي شخص لديه نفس المشكلة التي عانيت منها. إذا كنت تستخدم إحدى مكتبات عملاء SendGrid ، فتأكد من تحديثها!

كنت أستخدم إصدار مكتبة C # 9.9.0 وبدأت في الحصول على هذا الخطأ من اللون الأزرق. لقد قمت بالتحديث إلى الإصدار 9.10.0 وتم حل المشكلة.

من المثير للاهتمام أنني واجهت نفس المشكلة تمامًا مع مكتبة C # Twilio التي تم حلها من خلال التحديث دون الحاجة إلى تغيير أي رمز. مجرد صدفة مع Twilio يستفسر SendGrid؟

في حالتي كان التالي:

لم يتعرف IDE الخاص بي (Intellij CE 2020.10.3) على متغير مقياس البيئة الخاص بي بشكل صحيح ، بدلاً من الحصول على قيمة مفتاح sendgrid api الخاصة بي: SG.sddDDeq.qwt ، كان يأخذ المسار إلى ملف .env ، ej: "C: / Users / Me / MyProjectRootFolder / sendgrid.env "وتزويده برؤوس طلبات Sendgrid كـ" ترخيص ":" Bearer C: /Users/Me/MyProjectRootFolder/sendgrid.env: "التي هي المشكلة التي تؤدي إلى الخطأ" التفويض المقدم المنحة غير صالحة ... ".

سو ... حاول تصحيح الأخطاء التي تطلبها من العناوين وتحقق من أن المفتاح المقدم صالح (أنت تتعرف على متغير env الخاص بك) ، وتحتاج أيضًا إلى إضافة مصادقة المجال أو التحقق من المرسل الفردي من SendGrid Dashboard.

أتمنى أن يساعد هذا شخص ما.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات