2015-01-05 86 views
0

您必須在Google Developer Console中設置JavaScript來源以允許某些來源訪問google apis。問題是我正在製作一個應用程序,該應用程序在使用file://協議的node-webkit中運行,而Google不允許將file://作爲JavaScript來源。 任何解決此問題的方法?我嘗試在node-webkit中運行一個本地http服務器,但沒有奏效。在文件系統中使用google API?

+0

爲什麼本地HTTP服務器不工作? – SLaks

+0

我找不到任何教程如何做到這一點,我試過的所有東西都是無用的:( –

回答

1

那麼你可以使用http://127.0.0.1/或本地主機URL對谷歌控制檯但是客戶端註冊API附加一個偵聽瀏覽器的窗口,所以,當谷歌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] 
     }); 
    } 
    });