2017-03-21 91 views
0

我具有離子頁與一個網站登錄按鈕,並用一個網站登錄控制器模塊

控制器是

module.controller('fbLoginCtrl', function($scope, $state, $q, UserService, $ionicLoading) { 
    // This is the success callback from the login method 
    var fbLoginSuccess = function(response) { 
     if (!response.authResponse){ 
      fbLoginError("Cannot find the authResponse"); 
      return; 
     } 

     var authResponse = response.authResponse; 

     getFacebookProfileInfo(authResponse) 
     .then(function(profileInfo) { 
      // For the purpose of this example I will store user data on local storage 
      UserService.setUser({ 
       authResponse: authResponse, 
       userID: profileInfo.id, 
       name: profileInfo.name, 
       email: profileInfo.email, 
       picture : "http://graph.facebook.com/" + authResponse.userID + "/picture?type=large" 
      }); 
      $ionicLoading.hide(); 
      $state.go('app.home'); 
     }, function(fail){ 
      // Fail get profile info 
      console.log('profile info fail', fail); 
     }); 
    }; 

    // This is the fail callback from the login method 
    var fbLoginError = function(error){ 
     console.log('fbLoginError', error); 
     $ionicLoading.hide(); 
    }; 

    // This method is to get the user profile info from the facebook api 
    var getFacebookProfileInfo = function (authResponse) { 
     var info = $q.defer(); 

     facebookConnectPlugin.api('/me?fields=email,name&access_token=' + authResponse.accessToken, null, 
      function (response) { 
       console.log(response); 
       info.resolve(response); 
      }, 
      function (response) { 
       console.log(response); 
       info.reject(response); 
      } 
     ); 
     return info.promise; 
    }; 

    //This method is executed when the user press the "Login with facebook" button 
    $scope.facebookSignIn = function() { 
     facebookConnectPlugin.getLoginStatus(function(success){ 
      if(success.status === 'connected'){ 
       // The user is logged in and has authenticated your app, and response.authResponse supplies 
       // the user's ID, a valid access token, a signed request, and the time the access token 
       // and signed request each expire 
       console.log('getLoginStatus', success.status); 

       // Check if we have our user saved 
       var user = UserService.getUser('facebook'); 

       if(!user.userID){ 
        getFacebookProfileInfo(success.authResponse) 
        .then(function(profileInfo) { 
         // For the purpose of this example I will store user data on local storage 
         UserService.setUser({ 
          authResponse: success.authResponse, 
          userID: profileInfo.id, 
          name: profileInfo.name, 
          email: profileInfo.email, 
          picture : "http://graph.facebook.com/" + success.authResponse.userID + "/picture?type=large" 
         }); 

         $state.go('app.home'); 
        }, function(fail){ 
         // Fail get profile info 
         console.log('profile info fail', fail); 
        }); 
       }else{ 
        $state.go('app.home'); 
       } 
      } else { 
       // If (success.status === 'not_authorized') the user is logged in to Facebook, 
       // but has not authenticated your app 
       // Else the person is not logged into Facebook, 
       // so we're not sure if they are logged into this app or not. 

       console.log('getLoginStatus', success.status); 

       $ionicLoading.show({ 
        template: 'Logging in...' 
       }); 

       // Ask the permissions you need. You can learn more about 
       // FB permissions here: https://developers.facebook.com/docs/facebook-login/permissions/v2.4 
       facebookConnectPlugin.login(['email', 'public_profile'], fbLoginSuccess, fbLoginError); 
      } 
     }); 
    }; 
}) 

和我的索引頁按鈕

<div class="button-bar" ng-controller="fbLoginCtrl"> 
     <button class="button button-positive icon icon-left ion-social-facebook waves-effect waves-light" ng-click="facebookSignIn()">Facebook</button> 
    </div> 

當我嘗試在模擬器中我得到這個錯誤 錯誤運行:$注射器:unpr]未知提供R:UserServiceProvider < - UserService < - fbLoginCtrl

,我不知道如何解決這個問題或者是什麼,甚至導致它 請人幫我這個問題

+1

當你注射的依賴性沒有定義或其無法正常注入通常發生這種錯誤。 –

+0

@MuhammedNeswine我知道這也許是問題,但我不知道如何解決它 – Horizon

回答

0

也許你沒有得到的facebookConnectPlugin插件。在運行模擬器之前,嘗試運行bower installnpm install

如果你還沒有安裝它,請訪問http://ngcordova.com/docs/plugins/facebook/爲指導

+0

我遵循指南,但我認爲它是舊的,因爲我一直安裝像目錄沒有找到或錯誤在'--target android-19 ' 你能請指導我在哪裏可以找到關於如何在離子應用程序中實施Facebook身份驗證的完整教程? 感謝您的幫助 – Horizon

相關問題