Поддерживает ли API Gmail JWT?

Я хочу получить доступ к API Gmail с помощью NodeJS.

Я использую межсерверный подход (см. это), но когда я выполняю код ниже, я получаю backEndError, код 500 от Google API.

Любые идеи?

var authClient = new google.auth.JWT(
    'email',
    'key.pem',
    // Contents of private_key.pem if you want to load the pem file yourself
    // (do not use the path parameter above if using this param)
    'key',
    // Scopes can be specified either as an array or as a single, space-delimited string
    ['https://www.googleapis.com/auth/gmail.readonly']
);

authClient.authorize(function(err, tokens) {
    if (err) 
        console.log(err);

    gmail.users.messages.list({ userId: 'me', auth: authClient }, function(err, resp) {
    // handle err and response
    if (err) {
        console.log(err);
});

person vitorvigano    schedule 28.08.2014    source источник
comment
+1 за хороший вопрос. Не знаю, я бы прошел через developers.google.com/accounts/docs/OAuth2Login во второй раз и проверьте, все ли шаги соответствуют ожиданиям (эта часть не видна в вашем коде). Один из случаев, когда это, вероятно, не удастся, — это если учетная запись «я» использует двухэтапную аутентификацию. В этом случае программные агенты должны использовать специальные токены, созданные только для них «мной» (developers.google.com/google-apps/help/faq/auth#what_twostep)   -  person xmojmr    schedule 30.08.2014
comment
Я также пытаюсь использовать JWT, но получаю access_denied Requested client not authorized.   -  person webjay    schedule 15.09.2014
comment
Могу я спросить вас о параметрах, которые вы дали new google.auth.JWT? Я использовал key.client_email в качестве первого параметра, null в качестве второго, key.private_key в качестве третьего, а затем области. Где мне указать, от какого пользователя я должен получать почту? Мне нужно получать электронные письма с разных учетных записей внутри домена.   -  person Kunok    schedule 09.09.2016


Ответы (1)


Да, у меня такая же проблема. Если я использую область "https://mail.google.com", я получаю

403
{
  "error" : "access_denied",
  "error_description" : "Requested client not authorized."
}

И если я использую область "https://mail.google.com/" (обратите внимание на / в конец), я получаю

403
 'Forbidden'

Кажется, это связано с использованием JWT и служебной учетной записи.

person Philippe Laval    schedule 21.11.2014