Je tente d'extraire des courriels de l'API Gmail de Google une fois qu'ils sont sur une page spécifique de ma demande. Les utilisateurs, une fois qu'ils sont sur cette page, se sont déjà connectés et sont authentifiés avec mon application et j'ai un accès complet à lire/écrire/modifier des emails.Node.js Erreur API Google, informations d'identification non valides ... Je ne sais pas exactement ce que je fais avec les jetons et j'essaie d'effectuer des appels côté serveur
Je rencontre des problèmes pour exécuter la fonction a gmail.users.threads.list() après cette étape. Quelqu'un pourrait-il essayer de m'aider à comprendre ce que je fais de façon incorrecte?
Je pensais pouvoir utiliser le jeton que j'ai obtenu une fois que l'utilisateur s'est connecté et authentifié avec mon application, mais cela ne semble pas être le cas.
Merci beaucoup d'avance !!!
est Ci-dessous le code:
const async = require('async');
const Order_info_item_scrape = require('../models/Order_info_item_scrape.js');
const Message = require('../models/Message.js');
var message_data = []
const passport = require('passport');
var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
var google = require('googleapis');
var OAuth2 = google.auth.OAuth2;
var oauth2Client = new OAuth2(
process.env.GOOGLE_ID,
process.env.GOOGLE_SECRET,
process.env.REDIRECT_URIS
);
var gmail = google.gmail({
version: 'v1',
auth: oauth2Client
});
google.options({ auth: oauth2Client });
exports.getOrder = (req, res) => {
if (req.user.initial_scrape_state == 'need_initial') {
console.log('here')
oauth2Client.setCredentials({
access_token: req.user.tokens[0].accessToken,
refreshToken: req.user.tokens[0].accessToken
});
oauth2Client.getToken(oauth2Client.access_token, function (err, tokens) {
// Now tokens contains an access_token and an optional refresh_token. Save them.
if (!err) {
oauth2Client.setCredentials(tokens);
}
});
oauth2Client.refreshAccessToken(function(err, tokens) {
// your access_token is now refreshed and stored in oauth2Client
// store these new tokens in a safe place (e.g. database)
});
var message
var retailers = ['[email protected]']
var key_words = '{subject:order subject:reciept subject:confirmation subject:purchase}'
query = 'in: anywhere,' + retailers +','+ key_words
//console.log(query)
gmail.users.threads.list({
auth: oauth2Client,
userId: req.user.email,
q: query
}, function(err, response) {
if (err) {
console.log('The API returned an error: ' + err);
return;
}
var threads = response['threads']
if (threads.length == 0) {
console.log('No labels found.');
} else {
for (var i = 0; i < threads.length; i++) {
var thread = threads[i];
console.log(req.user.email)
//getMessage(i ,auth, thread)
}
}
});
}