Sendgrid-nodejs: A concessão de autorização fornecida é inválida, expirou ou foi revogada (401)

Criado em 1 set. 2016  ·  15Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Resumo do problema

Ao enviar um e-mail usando a API Nodejs V3, recebo a seguinte mensagem de erro:

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

Esta mensagem é produzida em uma instância localhost como em um ambiente de servidor ativo.

Fragmento de código

O seguinte código é usado para enviar o 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'
        });
    }
});

Detalhes técnicos:

  • localhost: Windows 10 x64
  • servidor de vidas: Heroku
  • sendgrid-nodejs Versão: 4.0.2
  • versão npm: 3.7.5
  • versão do nó: 4.4.5
help wanted question

Comentários muito úteis

Criei uma nova conta com uma nova chave de API com exatamente o mesmo código. Agora consigo enviar e-mails enquanto espero pelo suporte uma eternidade.

Todos 15 comentários

Olá @ ninox92 ,

Isso significa que há um problema com sua chave de API.

Primeiro, verifique o valor de SENGRID_API_KEY

Em seguida, entre em contato com nossa equipe de suporte em https://support.sendgrid.com para que eles possam descobrir o que há de errado com as permissões da sua chave API.

Obrigado!

SENGRID_API_KEY foi verificado e tentou uma chave de API recém-criada, mas também reproduziu a mesma mensagem de erro.

Usando uma solicitação CURL POST para enviar um e-mail, porém, consegui enviar um e-mail com sucesso usando a mesma chave API.

Vou tentar entrar em contato com o suporte mais uma vez.

No código que você postou, você tem SENGRID_API_KEY e estou pensando que você quis dizer SENDGRID_API_KEY

Obrigado por apontar o erro de digitação do nome da variável. Eu vou mudar isso. No entanto, a variável foi preenchida corretamente com minha chave de API.

Acabei de tentar novamente e não consegui reproduzir. Aqui está o código que usei:

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

Você também poderia fornecer a solicitação cURL que está funcionando para você?

Usei o seguinte Hello, World! exemplo da página de exemplos 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!"}]}'

Olá @ ninox92 ,

Você tentou usar o exemplo de código que forneci?

Esse erro significa que sua chave API não está sendo definida corretamente.

Se você não estiver usando variáveis ​​de ambiente, terá:

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

Criei uma nova conta com uma nova chave de API com exatamente o mesmo código. Agora consigo enviar e-mails enquanto espero pelo suporte uma eternidade.

Obrigado pelo acompanhamento, estou feliz que você esteja funcionando! Informe-nos se tiver algum outro problema.

obrigado me ajuda muito

oi pessoal estou tendo problemas, deu-me o mesmo erro aqui está o código que eu uso.

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

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

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

app.get ('/', função (req, res) {

var helper = require ('sendgrid'). mail;
var fromEmail = new helper.Email ('[email protected] ');
var toEmail = novo helper.Email ('[email protected] ');
var subject = 'Hello World da biblioteca SendGrid Node.js!';
var content = new helper.Content ('text / plain', 'Hello, Email!');
var mail = novo helper.Mail (fromEmail, assunto, toEmail, conteúdo);

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

sg.API (solicitação, função (erro, resposta) {
if (erro) {
console.log ('Resposta de erro recebida');
}
console.log (response.statusCode);
console.log (response.body);
console.log (response.headers);
});

});

app.listen (porta, função () {
console.log ("Ouvindo: *" + porta);
});

e no meu arquivo .env.example
SENDGRID_API_KEY = código aqui / * eu tenho o código API aqui * /

se você precisar enviar e-mail via API com método de postagem, faça assim:

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

router.post ('/', função (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');

    }
});

})

módulo.exportações = roteador;

Desculpe pelo problema está funcionando agora eu pensei que era um erro, era um erro 202. Desculpe

Apenas para qualquer pessoa com o mesmo problema que eu. Se você estiver usando uma das bibliotecas cliente do SendGrid, certifique-se de que ela esteja atualizada!

Eu estava usando a versão da biblioteca C # 9.9.0 e comecei a receber este erro do nada. Eu atualizei para a versão 9.10.0 e isso resolveu o problema.

Curiosamente, tive exatamente o mesmo problema com a biblioteca C # Twilio que uma atualização resolveu sem que eu tivesse que alterar nenhum código. Apenas uma coincidência com Twilio adquirindo SendGrid?

No meu caso foi o seguinte:

Meu IDE (Intellij CE 2020.10.3) não estava reconhecendo minha variável enviromet corretamente, em vez de obter o valor da chave API de sendgrid ej: SG.sddDDeq.qwt, ele estava pegando o caminho para o arquivo .env, ej: "C: / Usuários / Me / MyProjectRootFolder / sendgrid.env "e fornecê-lo aos cabeçalhos de solicitação Sendgrid como" Autorização ":" Portador C: /Users/Me/MyProjectRootFolder/sendgrid.env: "qual é o problema que leva ao erro" A autorização fornecida concessão é inválida ... ".

Então ... tente depurar seus cabeçalhos de solicitação e verifique se a chave fornecida é válida (você pode reconhecer sua variável env), e também precisa adicionar uma Autenticação de domínio ou Verificação de remetente único de seu painel SendGrid.

Espero que isso ajude alguém.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

amlcodes picture amlcodes  ·  4Comentários

danielflippance picture danielflippance  ·  4Comentários

murphman300 picture murphman300  ·  4Comentários

wooyah picture wooyah  ·  4Comentários

thinkingserious picture thinkingserious  ·  4Comentários