पहुँच (CRUD) Google डिस्क पर मैं कोशिश कर रहा हूँ से Google डिस्क एक्सेस। एक्सटेंशन जावास्क्रिप्ट में कोडित हैं, लेकिन दो मौजूदा जावास्क्रिप्ट एसडीके में से कोई भी फिट नहीं लगता है; क्लाइंट-साइड एसडीके, उम्मीद "विंडो" उपलब्ध होने की कौन से विस्तार में ऐसा नहीं है, और सर्वर साइड एसडीके, नोड-विशिष्ट सुविधाओं पर भरोसा करने लगता है एक स्क्रिप्ट है कि नोड में काम करता है अब जब मैं लोड करता है ब्राउज़र ब्राउज़र के माध्यम से इसे चलाने के बाद क्रोम में। ? मैं कच्चे बाकी कॉल का उपयोग कर अटक कर रहा हूँ नोड स्क्रिप्ट काम करता है इस तरह दिखता है:एक Firefox विस्तार से एक Firefox विस्तार
var Google = new function(){
this.api = require('googleapis');
this.clientID = '....';
this.clientSecret = '....';
this.redirectURL = 'urn:ietf:wg:oauth:2.0:oob';
this.scope = 'https://www.googleapis.com/auth/drive.file';
this.client = new this.api.auth.OAuth2(this.clientID, this.clientSecret, this.redirectURL);
}
}
जो तब के बाद का उपयोग कर कहा जाता है:
var google = require('googleapis');
var readlineSync = require('readline-sync');
var CLIENT_ID = '....',
CLIENT_SECRET = '....',
REDIRECT_URL = 'urn:ietf:wg:oauth:2.0:oob',
SCOPE = 'https://www.googleapis.com/auth/drive.file';
var oauth2Client = new google.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
var url = oauth2Client.generateAuthUrl({
access_type: 'offline', // 'online' (default) or 'offline' (gets refresh_token)
scope: SCOPE // If you only need one scope you can pass it as string
});
var code = readlineSync.question('Auth code? :');
oauth2Client.getToken(code, function(err, tokens) {
console.log('authenticated?');
// Now tokens contains an access_token and an optional refresh_token. Save them.
if(!err) {
console.log('authenticated');
oauth2Client.setCredentials(tokens);
} else {
console.log('not authenticated');
}
});
मैं इस स्क्रिप्ट पर browserify का उपयोग कर नोड GDrive एसडीके लपेट एक बटन क्लिक (यह ब्राउज़र की शुरूआत करता है, तो पाठ क्षेत्र कोई कोड है एक पाने के लिए):
function authorize() {
var code = document.getElementById("code").value.trim();
if (code === '') {
var url = Google.client.generateAuthUrl({access_type: 'offline', scope: Google.scope});
var win = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow('navigator:browser');
win.gBrowser.selectedTab = win.gBrowser.addTab(url);
} else {
Google.client.getToken(code, function(err, tokens) {
if(!err) {
Google.client.setCredentials(tokens);
// store token
alert('Succesfully authorized');
} else {
alert('Not authorized: ' + err); // always ends here
}
});
}
}
लेकिन इस त्रुटि पैदावार Not authorized: Invalid protocol: https:
@friflaj क्या आपने विंडो ओबीजे की नकल करने की कोशिश की थी? 'विंडो = विंडो = {} 'एक उच्च स्तर का निर्माण करता है ऐसा लगता है कि वे ग्लोबल वेरिएबल – yoelp
स्टोर करने के लिए केवल Winodw obj का उपयोग करते हैं, यही वह है जो मैं अभी कोशिश कर रहा हूं। नोड संस्करण गतिशील मॉड्यूल लोडिंग का एक रूप उपयोग करता है जो ब्राउज़र को बचने के लिए प्रतीत होता है, इसलिए मैंने इसे छोड़ दिया है। – retorquere
क्या आपने आईफ्रेम का उपयोग करने का प्रयास किया है? मैं फ़ायरफ़ॉक्स में विश्वास करता हूं कि आपके पास "पृष्ठभूमि स्क्रिप्ट" तक पहुंच है। यह मूल रूप से एक हेडलेस एचटीएमएल पेज है जिसे आपका कोड निष्पादित किया जाता है। आपको यहां एक आईफ्रेम उत्पन्न करने में सक्षम होना चाहिए। (बस स्पिटबॉलिंग, मुझे यह पहले काम करने के लिए मिला है, लेकिन याद नहीं कर सकता) कैसे –