2013-04-09 86 views
4

我是AngularJS的新手,但我非常喜歡AngularJS的工作方式,因此我希望將其部署爲我的Google雲端點後端的客戶端。然後我馬上得到兩個問題:AngularJS和谷歌雲端點:通過需要步行

1,在哪裏把myCallback,所以它能夠工作到ANgularJs控制器?

<script src="https://apis.google.com/js/client.js?onload=myCallback"></script> 

2,我怎樣才能做到oauth2?以及控制器如何知道用戶是否被授權?

gapi.auth.authorize({client_id: myCLIENT_ID, 
     scope: mySCOPES,..... 

任何幫助表示讚賞。

回答

5

對於加載谷歌JavaScript庫AngularJs,傳遞給谷歌JavaScript庫的onLoad回調函數是引導AngularJS,像這樣的功能:

這一切都最終的HTML文件:

<script src="https://apis.google.com/js/client.js?onload=startApp"> 

然後,在<head>節你引導的角度是這樣的:

<script type='text/javascript'> 

function startApp() { 

    var ROOT = 'http://<yourapi>.appspot.com/_ah/api'; 
    gapi.client.load('myapifromgoogleendpoint', 'version1', function() { 
     angular.bootstrap(document, ["myModule"]); 
    }, ROOT); 
} 

</script> 

當de由Kenji抄寫,您還需要從您的html中刪除ng-app指令。

+3

對於上面嘗試的人,您必須刪除ng-app,例如這是「手動引導」技術之一,並且在設置ng-app時不起作用。 –

+0

我認爲Kenji的評論應該包含在答案中;它可以節省很多時間給人們(特別是角度初學者) –

0

關於回調 - 爲了從中獲得你需要使用注射器的角度控制器(http://docs.angularjs.org/api/AUTO $注射器。)

只需創建一個全球性的回調函數,然後得到參考控制器是這樣的:

window.callbackFunction() { 
    injector = angular.element(document.getElementById('YourController')).injector() 
    injector.invoke(function ($rootScope, $compile, $document) { 
    $rootScope.variable = "stuff you want to inject"; 
    }) 
} 

在這個例子中,我注入數據到rootScope,但這個過程也適用於特定的控制器範圍(只注入$範圍代替)

不能與第二個問題的幫助我對gapi不熟悉,但是從angularjs創建auth2調用非常簡單。

+0

感謝,我會嘗試。 –