2016-06-30 7 views
7

उपयोगकर्ता बनाते समय, मैं अपना डिस्प्ले नाम सेट करने में सक्षम होना चाहता हूं। मैं एंड्रॉइड में यह कैसे करूं?उपयोगकर्ता बनाने के दौरान उपयोगकर्ता का फ़ायरबेस सेटडिस्प्लेनाम उपयोगकर्ता एंड्रॉइड

mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if(task.isSuccessful()){ 
       FirebaseUser.getCurrentUser().setDisplayName(mName); //I want to do this 
      } 
}); 

मान लें सभी चर घोषित किया गया है और/या सही तरीके से प्रारंभ: यहाँ मैं क्या हासिल करना चाहते का एक उदाहरण है।

+2

इसकी समस्या को पोस्ट करने से पहले [MCVE] (http://stackoverflow.com/help/mcve) बनाने की अनुशंसा की गई। – devprashant

+0

@devprashant मैं –

उत्तर

15

मुझे फायरबेस डॉक्स में जवाब मिला। मैं इसे यहां उद्धृत करूंगा: "अगर साइन-इन सफल हुआ, तो ऑथस्टेट लिस्टनर ऑनथस्टेट चेंज कॉलबैक चलाता है। कॉलबैक में, आप उपयोगकर्ता के खाता डेटा प्राप्त करने के लिए getCurrentUser विधि का उपयोग कर सकते हैं।" यहाँ लिंक है:, https://firebase.google.com/docs/auth/android/password-auth#sign_in_a_user_with_an_email_address_and_password

तो इसका मतलब है कि आप ऊपर कोड कर (ऋण FirebaseUser लाइन), और फिर घोषणा और एक Firebase AuthStateListener प्रारंभ नीचे दिखाया गया है की तरह, आप उपयोगकर्ता का प्रदर्शन नाम सेट करें और फिर पर स्थानांतरित कर सकते हैं, तो किसी भी अन्य गतिविधि के लिए आप चाहते हैं:

mAuthListener = new FirebaseAuth.AuthStateListener() { 
    @Override 
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
     FirebaseUser user = firebaseAuth.getCurrentUser(); 
     if(user!=null){ 
      UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() 
         .setDisplayName(mName).build(); 
      user.updateProfile(profileUpdates); 
      Intent intent = new Intent(currentActivity.this, nextActivity.class); 
      startActivity(intent); 
     } 
    } 
}; 

और भूल जाते हैं तो तरह onResume में AuthStateListener() जोड़ने के लिए नहीं है:

@Override 
public void onResume(){ 
    super.onResume(); 
    mAuth.addAuthStateListener(mAuthListener); 
} 

इसी तरह, मत भूलना onStop विधि में इसे हटाने के लिए जैसे:

@Override 
public void onStop(){ 
    super.onStop(); 
    if(mAuthListener != null){ 
     mAuth.removeAuthStateListener(mAuthListener); 
    } 
} 

और किया गया! आप उपयोगकर्ता का डिस्प्ले नाम सेट करते हैं ताकि आप इसे अन्य गतिविधियों में उपयोग कर सकें। यह उपयोगी होगा यदि आप उपयोगकर्ता को बधाई देना चाहते हैं या प्रदर्शन नाम से जुड़े किसी अन्य उपयोगकर्ता डेटा तक पहुंचना चाहते हैं।

+0

करूँगा लेकिन इस मामले में हम दो नेटवर्क कॉल सही कर देंगे? क्या ऐसा कोई तरीका नहीं होना चाहिए जिसमें हम इसे एक ही साइनअप में जोड़ सकें? – Zen

+0

@Zen यह कोड यह जांचने के लिए है कि कोई उपयोगकर्ता लॉग इन है या नहीं। यदि उपयोगकर्ता लॉग इन है, तो आप ऐप की होम स्क्रीन (इरादों का उपयोग करके) पर जाकर इसे संभाल सकते हैं, या आप साइन अप/लॉगिन पर जा सकते हैं पृष्ठ। साइन अप/लॉगिन कोड और यह कोड आम तौर पर आपके ऐप को डिज़ाइन करने के तरीके के आधार पर दो अलग-अलग गतिविधियों में होगा। –

+0

यह कोड प्रत्येक बार रेस्यूम पर उपयोगकर्ता प्रोफ़ाइल अपडेट किया गया। क्या वो सही है ? –

5

वैकल्पिक रूप से, आप कोड की निम्न तीन पंक्तियों लिख कर उपयोगकर्ता के Firebase प्रदर्शन नाम सेट कर सकते हैं:

FirebaseUser user = mAuth.getCurrentUser(); 

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() 
        .setDisplayName(mName).build(); 

user.updateProfile(profileUpdates); 

ऐसा करके, अपने मूल कोड इस तरह दिखना चाहिए:

mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if(task.isSuccessful()){ 
       // Sign in success 
       FirebaseUser user = mAuth.getCurrentUser(); 

       UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() 
        .setDisplayName(mName).build(); 

       user.updateProfile(profileUpdates); 
      } 
}); 

क्या ऐसा इसलिए होता है कि जब उपयोगकर्ता का खाता ईमेल और पासवर्ड प्रमाणीकरण का उपयोग करके सफलतापूर्वक बनाया गया है, तो यह उपयोगकर्ता में साइन-इन करेगा। इस बिंदु पर, आप वर्तमान फायरबेस उपयोगकर्ता ऑब्जेक्ट प्राप्त कर सकते हैं और अपनी डिस्प्ले नाम प्रॉपर्टी को जो भी स्ट्रिंग चाहते हैं उसे सेट कर सकते हैं।

सत्यापन ईमेल में उपयोगकर्ता के प्रोफ़ाइल नाम का परीक्षण करने के लिए यह बहुत अच्छा है।

नोट: एक Firebase उपयोगकर्ता वस्तु बुनियादी गुण-एक अद्वितीय ID, एक प्राथमिक ईमेल पता, एक नाम और एक तस्वीर यूआरएल संग्रहीत परियोजना के उपयोगकर्ता डेटाबेस में की एक निश्चित सेट, उपयोगकर्ता द्वारा अद्यतन किया जा सकता है । आप फायरबेस उपयोगकर्ता ऑब्जेक्ट में अन्य गुणों को सीधे नहीं जोड़ सकते हैं; इसके बजाय, आप अपने फ़ायरबेस रीयलटाइम डेटाबेस में अतिरिक्त गुणों को स्टोर कर सकते हैं। (Firebase User Object Properties Doc)

+0

यह उत्तर समय पर शीर्ष पर पहुंच जाएगा। धन्यवाद, बस जरूरत के रूप में काम किया। –

संबंधित मुद्दे