问题描述
我正在使用https://developers.google.com/docs/api/quickstart/nodejs上提供的文档,以便使用Google Doc API开发node.js应用程序的工作示例。但是,在以下代码中:
const fs = require('fs');
const readline = require('readline');
const {google} = require('googleapis');
// If modifying these scopes,delete token.json.
const SCOPES = ['https://www.googleapis.com/auth/documents.readonly'];
// The file token.json stores the user's access and refresh tokens,and is
// created automatically when the authorization flow completes for the first
// time.
const TOKEN_PATH = 'token.json';
// Load client secrets from a local file.
fs.readFile('credentials.json',(err,content) => {
if (err) return console.log('Error loading client secret file:',err);
// Authorize a client with credentials,then call the Google Docs API.
authorize(JSON.parse(content),printDocTitle);
});
/**
* Create an OAuth2 client with the given credentials,and then execute the
* given callback function.
* @param {Object} credentials The authorization client credentials.
* @param {function} callback The callback to call with the authorized client.
*/
function authorize(credentials,callback) {
const {client_secret,client_id,redirect_uris} = credentials.installed;
const oAuth2Client = new google.auth.OAuth2(
client_id,client_secret,redirect_uris[0]);
// Check if we have previously stored a token.
fs.readFile(TOKEN_PATH,token) => {
if (err) return getNewToken(oAuth2Client,callback);
oAuth2Client.setCredentials(JSON.parse(token));
callback(oAuth2Client);
});
}
/**
* Get and store new token after prompting for user authorization,and then
* execute the given callback with the authorized OAuth2 client.
* @param {google.auth.OAuth2} oAuth2Client The OAuth2 client to get token for.
* @param {getEventsCallback} callback The callback for the authorized client.
*/
function getNewToken(oAuth2Client,callback) {
const authUrl = oAuth2Client.generateAuthUrl({
access_type: 'offline',scope: SCOPES,});
console.log('Authorize this app by visiting this url:',authUrl);
const rl = readline.createInterface({
input: process.stdin,output: process.stdout,});
rl.question('Enter the code from that page here: ',(code) => {
rl.close();
oAuth2Client.getToken(code,token) => {
if (err) return console.error('Error retrieving access token',err);
oAuth2Client.setCredentials(token);
// Store the token to disk for later program executions
fs.writeFile(TOKEN_PATH,JSON.stringify(token),(err) => {
if (err) console.error(err);
console.log('Token stored to',TOKEN_PATH);
});
callback(oAuth2Client);
});
});
}
/**
* Prints the title of a sample doc:
* https://docs.google.com/document/d/195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE/edit
* @param {google.auth.OAuth2} auth The authenticated Google OAuth 2.0 client.
*/
function printDocTitle(auth) {
const docs = google.docs({version: 'v1',auth});
docs.documents.get({
documentId: '195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE',},res) => {
if (err) return console.log('The API returned an error: ' + err);
console.log(`The title of the document is: ${res.data.title}`);
});
}
在显示const rl = readline.createInterface({
并使用r1促使用户通过用户输入输入代码的部分,有一种方法可以更改此代码,从而无需用户输入,并且代码是自动的从网址中获取并用于交换访问令牌。
我已经进行了研究,但是还没有找到通过代码提取url内容的特定方法(通常会有一个带有url的请求对象,但这在Google文档中不存在)。 / p>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)