在文件系统中使用 google API?
Using google APIs in the file system?
您必须在 Google 开发者控制台中设置 javascript 来源,以允许某些来源访问 google api。问题是我正在制作一个在使用 file:// 协议的 node-webkit 中运行的应用程序,并且 google 不允许 file:// 成为 javascript 来源。
有什么解决方法吗?我尝试在 node-webkit 中运行本地 http-server,但没有成功。
您可以使用 http://127.0.0.1/ 或本地主机 URL 在 Google 控制台上注册 API,但在您的客户端将监听器附加到浏览器的 window ,这样当 google api 重定向到我们的末端时,我们可以拦截该操作并从 url 获取 Authorization Code
。我已经在 phonegap/cordova 应用程序上试过了,效果很好。检查代码库以供参考。
var authUrl = AUTH_URL + '?' +
'&client_id=' + options.client_id +
'&redirect_uri=' + options.redirect_uri +
'&response_type=code' +
'&scope=' + options.scopez +
'&approval_prompt=force';
//Open the OAuth consent page in the InAppBrowser
var authWindow = window.open(authUrl, '_blank', 'location=no,toolbar=no,clearcache=yes,clearsessioncache=yes,closebuttoncaption="Close"');
authWindow.addEventListener('loadstart', function(e) {
var url = e.url;
var code = /\?code=(.+)$/.exec(url);
var error = /\?error=(.+)$/.exec(url);
//alert("code : " + JSON.stringify(code));
if (code || error) {
//Always close the browser when match is found
console.log("code : " + code);
console.log("Closing OAuth Window.");
authWindow.close();
}
if (code) {
//Exchange the authorization code for an access token
OAuthService.getAccessTokenByCode(code[1]).then(function(data) {
deferred.resolve(data);
}, function(error) {
deferred.reject(error);
});
} else if (error) {
//The user denied access to the app
deferred.reject({
error: error[1]
});
}
});
您必须在 Google 开发者控制台中设置 javascript 来源,以允许某些来源访问 google api。问题是我正在制作一个在使用 file:// 协议的 node-webkit 中运行的应用程序,并且 google 不允许 file:// 成为 javascript 来源。 有什么解决方法吗?我尝试在 node-webkit 中运行本地 http-server,但没有成功。
您可以使用 http://127.0.0.1/ 或本地主机 URL 在 Google 控制台上注册 API,但在您的客户端将监听器附加到浏览器的 window ,这样当 google api 重定向到我们的末端时,我们可以拦截该操作并从 url 获取 Authorization Code
。我已经在 phonegap/cordova 应用程序上试过了,效果很好。检查代码库以供参考。
var authUrl = AUTH_URL + '?' +
'&client_id=' + options.client_id +
'&redirect_uri=' + options.redirect_uri +
'&response_type=code' +
'&scope=' + options.scopez +
'&approval_prompt=force';
//Open the OAuth consent page in the InAppBrowser
var authWindow = window.open(authUrl, '_blank', 'location=no,toolbar=no,clearcache=yes,clearsessioncache=yes,closebuttoncaption="Close"');
authWindow.addEventListener('loadstart', function(e) {
var url = e.url;
var code = /\?code=(.+)$/.exec(url);
var error = /\?error=(.+)$/.exec(url);
//alert("code : " + JSON.stringify(code));
if (code || error) {
//Always close the browser when match is found
console.log("code : " + code);
console.log("Closing OAuth Window.");
authWindow.close();
}
if (code) {
//Exchange the authorization code for an access token
OAuthService.getAccessTokenByCode(code[1]).then(function(data) {
deferred.resolve(data);
}, function(error) {
deferred.reject(error);
});
} else if (error) {
//The user denied access to the app
deferred.reject({
error: error[1]
});
}
});