离子应用程序:将Google登录与现有后端集成

时间:2016-07-13 21:04:25

标签: ionic-framework facebook-login google-login

我正在关注此tutorial为我的Ionic应用创建Google登录信息。我已经设置了电子邮件/通行证登录设置,我希望将谷歌登录添加到此系统。我遵循了除了注销和服务部分之外的说明,因为我已经为我的电子邮件/通行证登录提供了一些代码。

截至目前,点击登录屏幕上的登录按钮无效。

我对本文的facebook版本存在同样的问题。

请帮忙!

2 个答案:

答案 0 :(得分:0)

好的,我有同样的问题,我遵循不同的路径。首先,您必须阅读https://www.thepolyglotdeveloper.com/2014/07/using-oauth-2-0-service-ionicframework/。此链接包含有关Google Developer Console的重要信息。在那里你必须“注册”你的离子应用程序并获得你的clientId和clientSecret。对于我的实现,cordovaOauth是必需的,但它随附ngCordova。

所以适合我的代码是:

//视图

 <button ng-click="googleLogin()" class="button button-block button-stable">
      Sign In
 </button> 

//控制器

//请注意您从Google Developer Console中获取clientId

.controller('LoginController', ['$scope', '$cordovaOauth',    
'$http','$location','$rootScope','$state','$window','$ionicLoading',   
 function($scope, $cordovaOauth, $http, $location, 
 $rootScope,$state,$window,$ionicLoading){

  $scope.googleLogin = function(){
  $cordovaOauth.google(clientId,         


 ["https://www.googleapis.com/auth/urlshortener","https://www.googleapis.com/auth/userinfo.email",

   "https://www.googleapis.com/auth/userinfo.profile",    "https://www.googleapis.com/auth/plus.me"]).
  then(function(result){

  var accessToken;

  accessToken = JSON.stringify(result);


  $ionicLoading.show({
    content: 'Loading',
    animation: 'fade-in',
    showBackdrop: true,
    maxWidth: 200,
    showDelay: 0
  });
  $http({method:"GET", url:"https://www.googleapis.com/plus/v1/people/me?access_token="+result.access_token}).
  success(function(response){
          var param = {
            provider: 'google',
              google: {
                            uid: response["id"],
                            provider: 'google',
                            first_name: response["name"]["givenName"],
                            last_name: response["name"]["familyName"],
                            email: response.emails[0]["value"],
                            image: response.image.url
                        }
            };


            //alert("get method");

            first_name  = response["name"]["givenName"];
            email =response.emails[0]["value"];

            $scope.first_name = first_name;
            $scope.email = email;


            $ionicLoading.hide();

            $location.url('/app/viewyouwanttoredirect');

  }, function(error) {
     alert("App can't get your info: " +error);
     });


}, function(error){
   alert("Authentication error!Please try again!" +error);
   });
}

}])

更新: 如果您遇到类似“无法找到InAppBrowser插件”的oauth问题, 在ng-cordova.js中用cordova-plugin-inappbrowser替换所有出现的org.apache.cordova.inappbrowser。这将解决问题。当然你需要在index.html:

<script src="yourpath/ng-cordova.js"></script>

你说你不想要ngCordovaOAuth解决方案,但glogin带来了痛苦。所以我发布我的答案,我希望能帮助你,也希望社区。

答案 1 :(得分:0)

我建议你使用这个进行facebook登录验证: https://github.com/jeduan/cordova-plugin-facebook4

简单快捷。相信我。