【发布时间】:2018-07-23 13:04:27
【问题描述】:
我包含一个 gmail.js 文件来在我的网站上进行 Gmail 集成。但是当我在另一个文件中需要 gmail.js 时,Node.js 会抛出一个 typeError。我的 gmail.js 文件中有以下代码。我在一个文件上分别使用了相同的代码,它可以工作。我已经正确安装了所有模块。
const express = require('express');
const google = require('googleapis');
var gmail = google.gmail('v1');
const googleAuth = require('google-auth-library');
const fs = require('fs');
var async = require('async');
var db = require('./db');
const SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'];
var oauth2Client = null;
fs.readFile('./client_secret.json', function(err, content){
if(err){
console.log("error loading client secret file" + err);
return;
}
var credentials = JSON.parse(content);
var clientSecret = credentials.installed.client_secret;
var clientId = credentials.installed.client_id;
var redirectUrl = credentials.installed.redirect_uris[0];
var auth = new googleAuth();
oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
//temp variables
//i will take token from database
oauth2Client.credentials = {
access_token: access_token,
refresh_token: refresh_token,
token_type: token_type,
expiry_date: expiry_date
}
getThreadIds(["test@test.com"]);
});
function setOAuth2Credentials(token){
oauth2Client.credentials = token;
return true;
}
function getAuthUrl(){
var authUrl = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: SCOPES
});
console.log(authUrl);
return authUrl;
}
function getToken(code){
oauth2Client.getToken(code, function(err, token){
if(err){
console.log('Error while trying to get access to token ' + err);
return false;
}
oauth2Client.credentials = token;
db.storeGoogleAuthToken(token, function(err, result){
if(err){
console.log("error storing token to database " + err);
return false;
}
return true;
})
})
}
【问题讨论】:
标签: node.js express google-api gmail google-api-nodejs-client