Вывод списка сообщений с помощью ошибки авторизации Gmail API NodeJS - PullRequest
0 голосов
/ 04 октября 2018

Я написал простой код для перечисления сообщений из моей учетной записи Gmail.Тем не менее, я получаю 401 ошибку.Мой код, как показано ниже

const gmailKey = google.gmail({version: 'v1', oauth2Client});

var initialRequest = gmailKey.users.messages.list({
    'userId': 'me'
});
getPageOfMessages(initialRequest, []);

var getPageOfMessages = function(request, result) {
    request.execute(function(resp) {
        result = result.concat(resp.messages);
        var nextPageToken = resp.nextPageToken;
            if (nextPageToken) {
                request = gmail.users.messages.list({
                    'userId': 'me',
                    'pageToken': nextPageToken
                });
                getPageOfMessages(request, result);
            }else{
                callback(result);
            }
    });
};

И ошибка

code: 401,
errors:
[{ domain: 'global',
   reason: 'required',
   message: 'Login Required',
   locationType: 'header',
   location: 'Authorization' }]

oauth2Client, как показано ниже

const oauth2Client = new google.auth.OAuth2(
    CLIENT_ID,
    CLIENT_SECRET,
    REDIRECT_URL
);

Я использовал тот же oauth2Client , чтобы получить токен доступа, а также проверили то же самое в подразделе .credentials .Я также гарантировал, что oauth2Client , инициализирующий gmailKey , содержит соответствующие учетные данные.

Как решить проблему с авторизацией в gmail?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Если у вас все еще есть эта проблема, проблема с не установлением авторизации находится в первой строке вставленного вами кода:

const gmailKey = google.gmail({version: 'v1', oauth2Client});

Правильный способ установки oauth2Clientэто:

const gmailKey = google.gmail({version: 'v1', auth: oauth2Client });

или

google.options({ auth: oauth2Client }); // sets globally const gmailKey = google.gmail('v1');

0 голосов
/ 04 октября 2018

'Требуется вход в систему',

Означает, что вам необходимо пройти аутентификацию для доступа к данным пользователей.

Возможно, вы захотите обратиться к Авторизация вашего приложения с помощью Gmail или с этим, но с его диска, вам придется слегка его изменить Пользовательский агент Oauth2

var GoogleAuth; // Google Auth object.
function initClient() {
  gapi.client.init({
      'apiKey': 'YOUR_API_KEY',
      'clientId': 'YOUR_CLIENT_ID',
      'scope': 'https://www.googleapis.com/auth/drive.metadata.readonly',
      'discoveryDocs': ['https://www.googleapis.com/discovery/v1/apis/drive/v3/rest']
  }).then(function () {
      GoogleAuth = gapi.auth2.getAuthInstance();

      // Listen for sign-in state changes.
      GoogleAuth.isSignedIn.listen(updateSigninStatus);
  });
}

Если вы используете узел, вы можете попробовать Быстрый запуск node.js

...