如何使用ClientID和ClientSecret在Phonegap内部使用AngularjsloginGoogle OAuth2

我正尝试通过Google OAuth2使用Angularjs(使用Ionic Framework)从Phonegap应用程序login。 目前我正在使用http://phonegap-tips.com/articles/google-api-oauth-with-phonegaps-inappbrowser.html进行login。但是,它创build了非常难看的代码,而且很难理解代码我正在使用Angular-UI-Router for Ionic。

这个问题似乎没有任何正确的答案螺旋。 我希望现在应该解决。 Google Angular Guys应该帮忙。 如何在电话中实施Google Auth?

最接近的主题是如何在Cordova / Phonegap中使用GoogleloginAPI ,但这不是angularjs的解决scheme。

我不得不使用下面的代码传递javascriptvariables值:

var el = document.getElementById('test'); var scopeTest = angular.element(el).scope(); scopeTest.$apply(function(){ scopeTest.user = user; scopeTest.logged_in = true; scopeTest.name = user.name; scopeTest.email = user.email; }); 

Solutions Collecting From Web of "如何使用ClientID和ClientSecret在Phonegap内部使用AngularjsloginGoogle OAuth2"

我做了这样的解决scheme,其中TestCtrl是loginbutton所在的控制器。 有一个基于jQuery的$ .ajax调用混合,我将改变为angualar方式。 google_call函数基本上调用了上面提到的phonegap提示中提到的google_api。

 .controller('TestCtrl', function($scope,$ionicPopup) { $scope.logged_in = false; $scope.getMember = function(id) { console.log(id); }; $scope.test = function(){ $ionicPopup.alert({"title":"Clicked"}); } $scope.call_google = function(){ googleapi.authorize({ client_id: 'CLIENT_ID', client_secret: 'CLIENT_SECRET', redirect_uri: 'http://localhost', scope: 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email' }).done(function(data) { accessToken=data.access_token; // alert(accessToken); // $loginStatus.html('Access Token: ' + data.access_token); console.log(data.access_token); //$ionicPopup.alert({"title":JSON.stringify(data)}); $scope.getDataProfile(); }); }; $scope.getDataProfile = function(){ var term=null; // alert("getting user data="+accessToken); $.ajax({ url:'https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token='+accessToken, type:'GET', data:term, dataType:'json', error:function(jqXHR,text_status,strError){ }, success:function(data) { var item; console.log(JSON.stringify(data)); // Save the userprofile data in your localStorage. window.localStorage.gmailLogin="true"; window.localStorage.gmailID=data.id; window.localStorage.gmailEmail=data.email; window.localStorage.gmailFirstName=data.given_name; window.localStorage.gmailLastName=data.family_name; window.localStorage.gmailProfilePicture=data.picture; window.localStorage.gmailGender=data.gender; window.localStorage.gmailName=data.name; $scope.email = data.email; $scope.name = data.name; } }); //$scope.disconnectUser(); //This call can be done later. }; $scope.disconnectUser = function() { var revokeUrl = 'https://accounts.google.com/o/oauth2/revoke?token='+accessToken; // Perform an asynchronous GET request. $.ajax({ type: 'GET', url: revokeUrl, async: false, contentType: "application/json", dataType: 'jsonp', success: function(nullResponse) { // Do something now that user is disconnected // The response is always undefined. accessToken=null; console.log(JSON.stringify(nullResponse)); console.log("-----signed out..!!----"+accessToken); }, error: function(e) { // Handle the error // console.log(e); // You could point users to manually disconnect if unsuccessful // https://plus.google.com/apps } }); }; }) 

我正在为使用Google OAuth2login时遇到类似问题的新手提供此答案。 所以要求Upvotes无耻,因为我也是新来的!