2

Ich habe versucht, folgende Tutorials sowie Blick auf andere stackoverflow Fragen, aber ich kann nicht herausfinden, was ich falsch mache.

Ich habe dies mit dem ionic creator erstellt und jetzt versuche ich, den Benutzer bei Google anmelden zu lassen und danach ist die komplette Route zu meinem Dashboard.

Sorry das ist alles brandneu für mich. Wenn du erklären kannst, was ich falsch mache und warum es so ist, kann ich lernen. Vielen Dank!

Mein controller.js:

angular.module('app.controllers', []) 

.controller('loginCtrl', ['$scope', '$stateParams', // The following is the constructor function for this page's controller. See https://docs.angularjs.org/guide/controller 
// You can include any angular dependencies as parameters for this function 
// TIP: Access Route Parameters for your page via $stateParams.parameterName 
function ($scope, $stateParams, $urlRouterProvider) { 

    $scope.googlelogin = function(){ 
     //alert('yup'); 
     var provider = new firebase.auth.GoogleAuthProvider(); 
     provider.addScope('https://www.googleapis.com/auth/plus.login'); 
     firebase.auth().signInWithPopup(provider).then(function(results){ 
      // This gives you a Google Access Token. You can use it to access the Google API. 
      var token = results.credential.accessToken; 
      // The signed-in user info. 
      var user = results.user; 
      console.log(user); 

      $urlRouterProvider.otherwise('/dashboard'); 
      //window.location.href = "dashboard.html"; 
     }); 
    } 
}]) 

Mein login.html:

<ion-view title="Login" hide-nav-bar="true" id="page4"> 
    <ion-content padding="true" class="manual-ios-statusbar-padding"> 
     <form id="login-form1" class="list"> 
      <div class="spacer" style="width: 300px; height: 40px;"></div> 
      <div> 
       <img src="img/7TKZQZBSSg62UJQB4zyu_logo.png" width="30%" height="auto" style="display: block; margin-left: auto; margin-right: auto;"> 
      </div> 
      <div class="spacer" style="width: 300px; height: 100px;"></div> 
      <a id="login-button1" class="button button-stable button-block" ng-click="googlelogin()">Google Login</a> 
      <button id="login-button3" class="button button-stable button-block">Facebook Login</button> 
     </form> 
    </ion-content> 
</ion-view> 

Routes.js:

angular.module('app.routes', []) 

.config(function($stateProvider, $urlRouterProvider) { 

    // Ionic uses AngularUI Router which uses the concept of states 
    // Learn more here: https://github.com/angular-ui/ui-router 
    // Set up the various states which the app can be in. 
    // Each state's controller can be found in controllers.js 
    $stateProvider 



    .state('menu.dashboard', { 
     url: '/dashboard', 
     views: { 
      'side-menu21': { 
       templateUrl: 'templates/dashboard.html', 
       controller: 'dashboardCtrl' 
      } 
     } 
    }) 

    .state('login', { 
     url: '/login', 
     templateUrl: 'templates/login.html', 
     controller: 'loginCtrl' 
    }) 

$urlRouterProvider.otherwise('/side-menu21/dashboard') 
}); 

Antwort

1

Ihre js sein sollte wie dieses

angular.module('app.controllers', []) 

    .controller('loginCtrl', ['$scope', '$stateParams', '$state','$location', 
    function ($scope, $stateParams,$state,$location, $urlRouterProvider) { 

     $scope.googlelogin = function(){ 

      var provider = new firebase.auth.GoogleAuthProvider(); 
      provider.addScope('https://www.googleapis.com/auth/plus.login'); 
      firebase.auth().signInWithPopup(provider).then(function(results){ 

       var token = results.credential.accessToken; 

       var user = results.user; 
       console.log(user); 

       $state.go('menu.dashboard'); 

//or you may use location like below 
//$location.path('/dashboard'); 
       }); 
      } 
     }]) 
+0

Wenn ich versuche, bekomme ich einen Fehler: Uncaught Error: Konnte nicht res olve '/ dashboard' aus dem Status 'login' (...) –

+1

Eigentlich ist es $ state.go ('menu.dashboard'). Das hat es behoben. Vielen Dank! –

+0

Ich habe die Antwort bearbeitet, um "menu.ashboard" anzuzeigen. –

1

sollten Sie $state.go('menu.dashboard'); verwenden nicht $urlRouterProvider.otherwise('/dashboard'); Ionic die Winkel verwendet Ui Router, können Sie mehr darüber lesen Sie hier: https://github.com/angular-ui/ui-router

+0

Fehler: Uncaught Typeerror: scope.go $ ist keine Funktion (...) –

+0

argh, tut mir leid, es ist $ state.go nicht $ scope.go Ich schlafe hier: s erinnere mich an injizieren $ state – iCediCe

+0

Überprüfen Sie die Lösung unten, ich bekomme einen Fehler: Uncaught Fehler: Konnte '/ Dashboard' aus dem Status nicht auflösen 'login' (...) –

0

Sie $ Location Service wie unten verwenden können,

angular.module('app.controllers', []) 
.controller('loginCtrl', ['$scope', '$stateParams', '$state','$location', 
    function ($scope, $stateParams,$state,$location, $urlRouterProvider) { 
     $scope.googlelogin = function(){ 
      var provider = new firebase.auth.GoogleAuthProvider(); 
      provider.addScope('https://www.googleapis.com/auth/plus.login'); 
      firebase.auth().signInWithPopup(provider).then(function(results){ 
       var token = results.credential.accessToken; 
       var user = results.user; 
       console.log(user); 
       $location.path('dashboard'); 
      }); 
     } 
    }])