簡體   English   中英

如何在Node.js中發現Google OAuth2中的API

[英]How to discover APIs in Google OAuth2 in Node.js

我在Node.js中遇到.discover方法的問題。 我有這樣一段代碼:

googleapis.discover('oauth2', 'v2').execute(function(err, client){
    if(!err)
        callback(client);
});

它拋出錯誤:TypeError:Object#沒有方法'discover'但是在所有教程中都提到了這樣的方法。 有誰知道什么是錯的?

我得到了同樣的錯誤。 我認為他們為Node更新了googleapis客戶端。

請嘗試按照新語法或使用舊版本:

var google = require('googleapis');
var OAuth2 = google.auth.OAuth2;
var oauth2Client = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
var drive = google.drive({ version: 'v2', auth: oauth2Client });

我得到了同樣的錯誤。 但環顧了幾個小時后。 我遇到了這個問題並意識到他們可能已經更改了API並且沒有更新官方文檔。

我也在嘗試使用此鏈接中的這段代碼( https://developers.google.com/drive/web/quickstart/quickstart-nodejs

 var googleapis = require('googleapis'), readline = require('readline'); var CLIENT_ID = 'YOUR CLIENT ID HERE', CLIENT_SECRET = 'YOUR CLIENT SECRET HERE', REDIRECT_URL = 'YOUR REDIRECT URL HERE', SCOPE = 'https://www.googleapis.com/auth/drive.file'; var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); var auth = new googleapis.OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL); googleapis.discover('drive', 'v2').execute(function(err, client) { var url = auth.generateAuthUrl({ scope: SCOPE }); var getAccessToken = function(code) { auth.getToken(code, function(err, tokens) { if (err) { console.log('Error while trying to retrieve access token', err); return; } auth.credentials = tokens; upload(); }); }; var upload = function() { client.drive.files .insert({ title: 'My Document', mimeType: 'text/plain' }) .withMedia('text/plain', 'Hello World!') .withAuthClient(auth).execute(console.log); }; console.log('Visit the url: ', url); rl.question('Enter the code here:', getAccessToken); }); 

經過幾個小時的努力。 在查看了互聯網上的其他文檔/教程之后,我將quickstart.js改為了。

 var googleapis = require('googleapis'); var OAuth2 = googleapis.auth.OAuth2; var readline = require('readline'); var CLIENT_ID = 'YOUR CLIENT ID HERE', CLIENT_SECRET = 'YOUR CLIENT SECRET HERE', REDIRECT_URL = 'YOUR REDIRECT URL HERE', SCOPE = 'https://www.googleapis.com/auth/drive.file'; var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); var oauth2Client = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL); var drive = googleapis.drive({ version: 'v2', auth: oauth2Client }); var execute = function(err, client) { var url = oauth2Client.generateAuthUrl({ scope: SCOPE }); var getAccessToken = function(code) { oauth2Client.getToken(code, function(err, tokens) { if (err) { console.log('Error while trying to retrieve access token', err); return; } oauth2Client.credentials = tokens; upload(); }); }; var upload = function() { console.log(client) client.drive.files .insert({ title: 'My Document', mimeType: 'text/plain' }) .withMedia('text/plain', 'Hello World!') .withAuthClient(oauth2Client).execute(console.log); }; console.log('Visit the url: ', url); rl.question('Enter the code here:', getAccessToken); }; execute(); 

它開始工作但是雖然我得到了輸出的URL,但是在從URL粘貼授權代碼后我收到錯誤。 上傳函數中的Client對象是未定義的,所以我得到一個類型錯誤,說“無法讀取未定義的屬性'驅動'”。 如果有人知道這個問題,請告訴我。 我也正在學習NodeJS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM