2015-07-10 64 views
0

所以我有一些驗證用戶使用谷歌我的應用程序的代碼工作正常。我想要做的就是將該用戶信息保存到firebase,然後讓該用戶能夠在他們的帳戶下專門添加數據,然後在他們下次登錄時重新加載數據。那麼最好的方法是什麼?我很失落。如何將Google登錄保存爲應用用戶?

(function() { 
    'use strict'; 

    angular.module('life-of-a-story') 
    .controller('UserController', function($scope, $firebaseAuth) { 
     var ref = new Firebase('https://life-of-a-story.firebaseio.com/'); 
     // create an instance of the authentication service 
     var auth = $firebaseAuth(ref); 
     // login with Google 
     this.login = function() { 
     auth.$authWithOAuthPopup("google").then(function(authData) { 
      console.log(authData); 
      console.log("Logged in as:", authData.uid); 
      var user = { 
      'name': authData.google.displayName, 
      'image': authData.google.profileImageURL, 
      'uid': authData.uid 
      } 
      console.log(user); 
     }).catch(function(error) { 
      console.log("Authentication failed:", error); 
     }); 
     }; 
    }); 
})(); 
+0

大部分火力地堡認證開發者存儲下'/ users'節點的每個用戶的數據。那是你在找什麼?如果是這樣的:https://www.firebase.com/docs/web/guide/user-auth.html#section-storing –

+0

omg這正是我正在尋找的感謝你哈哈,你可以把它作爲答案,所以我可以選擇? –

+0

是的,我不確定它是否可以成爲答案,因爲它本質上只是一個鏈接。另一方面:在一週內你是第二個問這個問題的人,很明顯這是我們可以在文檔中改進的東西。我會寫一個更詳細的答案。 –

回答

1

AngularFire是一個(相對)薄UI結合的火力地堡的常規的JavaScript SDK的頂庫。因此,當在AngularFire文檔中沒有明確記錄某些內容時,您有時可以在documentation for the regular Firebase JavaScript SDK中找到答案。

大多數Firebase身份驗證開發人員將每個用戶的數據存儲在/users節點下。如果這就是你想要做的,你可以在Storing user data in the Firebase documentation for JavaScript這個部分閱讀如何完成它。

從那裏的相關代碼:

// we would probably save a profile when we register new users on our site 
// we could also read the profile to see if it's null 
// here we will just simulate this with an isNewUser boolean 
var isNewUser = true; 
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com"); 
ref.onAuth(function(authData) { 
    if (authData && isNewUser) { 
    // save the user's profile into the database so we can list users, 
    // use them in Security and Firebase Rules, and show profiles 
    ref.child("users").child(authData.uid).set({ 
     provider: authData.provider, 
     name: getName(authData) 
    }); 
    } 
}); 
// find a suitable name based on the meta info given by each provider 
function getName(authData) { 
    switch(authData.provider) { 
    case 'password': 
     return authData.password.email.replace(/@.*/, ''); 
    case 'twitter': 
     return authData.twitter.displayName; 
    case 'facebook': 
     return authData.facebook.displayName; 
    } 
} 
相關問題