2014-12-01 4 views
3

Angularfire 0.9에서 새 사용자를 만들려면 $ firebaseAuth 서비스와 $ createUser 메소드를 사용할 수 있습니다.Firebase/Angularfire 0.9 - 새 사용자 및 프로파일 만들기

그러나이 방법은 새로운 사용자 자격 증명을 반환하지 않는다고 말할 수 있습니다. 따라서 해당 사용자에게 프로필을 추가하려는 경우 해당 사용자의 Auth Data, 특히 "uid"를 검색하는 가장 좋은 방법은 무엇입니까? 그래서 새 사용자의 프로필 데이터를 저장할 수 있습니다. 아래는 내가하려는 일의 예입니다.

var FIREBASEURL = "https://<my-firebase>.firebaseio.com" 

var ref = new Firebase(FIREBASEURL); 
$rootScope.authObj = $firebaseAuth(ref); 

var newUser = { 
    email: "[email protected]", 
    password: "password", 
    displayName: "Display Name", 
    favFood: "Food" 
}; 

$rootScope.authObj.$createUser(newUser.email, newUser.password).then(function() { 

    console.log("User created successfully!"); 

    // Retrieve new Auth Data specifically uid  

    var newAuthData = ?????????? 

    // Remove password from object and create user profile 

    delete newUser.password; 
    newUser.timestamp = Firebase.ServerValue.TIMESTAMP; 

    var userRef = new Firebase(FIREBASEURL + '/users/'); 
    userRef.child(newAuthData.uid).set(newUser); 

}).catch(function(error) { 

    console.error("Error: ", error); 

}); 
+0

Firebase Javascript API 2.0.5에 따라 부분적으로 내 질문에 답변하십시오. changelog "createUser()에 대한 콜백에서 두 번째 인수를 통해 생성 된 사용자를 표시하십시오.". 이것은 내가 필요로하는 새로운 Auth의 "uid"를 제공합니다. 나는 앵귤러 파이어 라이브러리가 적절하게 업데이트 될 것이라고 가정하고 그것이 올 때이 질문을 업데이트 할 것입니다. – pessato

답변

7

0.9.1에서 uid는 약속과 함께 반환됩니다. 예 :

var FIREBASEURL = "https://<my-firebase>.firebaseio.com" 

var ref = new Firebase(FIREBASEURL); 
$rootScope.authObj = $firebaseAuth(ref); 

var newUser = { 
    email: "[email protected]", 
    password: "password", 
    displayName: "Display Name", 
    favFood: "Food" 
}; 

$rootScope.authObj.$createUser(newUser.email, newUser.password).then(function(authData) { 
    console.log(authData.uid); //should log new uid. 
    return createProfile(newUser, authData); 
}); 


function createProfile(authData, user){   
    var profileRef = $firebase(ref.child('profile')); 
    return profileRef.$set(authData.uid, user); 
}; 

그러면 가야합니다. 열쇠는 반환 된 약속 (예 : authData)을 후속 기능에 전달하는 것입니다.

0.9.0에서 사용자의 uid를 얻으려면 인증 방법을 호출해야합니다.

+3

이 질문에 답하는 동안 일반적으로 보안 규칙을 상당히 단순화하고 익명 쓰기의 복잡성을 프로필 (많은 경우)에서 제거하므로 프로필 작성을 허용하기 전에 사용자를 인증하는 것이 좋습니다. – Kato

+0

사용자의 프로필을 만들고 로그인하고 추가하는 방법에 대한 "꽤"해결책이 있습니까? 또한 반대 방향으로 사용자와 프로필을 제거하십시오. 또는이 작업을 수행하기 위해 항상 약속과 중첩 된 함수 호출이있을 것입니까? 사용자가 성공적으로 제거되었지만 아직 프로필이 삭제되지 않은 가능성을 생각합니다. 나는 지금 당장 실행되는 배치 작업을 추측하고 실패한 물건을 정리할 수 있습니다. – KungWaz

+0

@Kato 내가하는 일은 단순히 이메일과 비밀번호를 요구하는 것입니다. 가입 후 로그인으로 리디렉션하십시오. 그런 다음 사용자가 프로필 페이지의 다른 추가 항목을 충족하기 위해 로그인합니다. 이 시점에서 나는 사용자가 로그인되어 있다는 것을 알고 있으므로 절약하는 것은 매우 간단합니다. – Rexford

관련 문제