2017-02-04 30 views
5

साइन इन बिना उपयोगकर्ता बनाने मैं जब एक "व्यवस्थापक उपयोगकर्ता", इस मुद्दे को मैं सिर्फ उसे बनाने के लिए नहीं वास्तव में साइन-इन करें चाहते हैं के रूप में प्रवेश अपने आवेदन से एक नया उपयोगकर्ता खाता बनाने के लिए कामना करता हूं।Firebase

यह है ईमेल/पासवर्ड के साथ एक नया उपयोगकर्ता बनाते समय स्वचालित साइन इन अक्षम करना संभव है।

मुझे लगता है कि दूसरों ने जेएस और स्विफ्ट के संबंध में इस प्रश्न से पूछा है लेकिन किसी भी एंड्रॉइड विशिष्ट संबंधित जानकारी को नहीं लग रहा है। मैं this person के रूप में एक ही बात को प्राप्त करने की कोशिश कर रहा हूँ, लेकिन एंड्रॉयड

साथ किसी भी मदद की सराहना की

+0

देखें http://stackoverflow.com/a/38013551/209103 –

उत्तर

3

यहाँ एक परीक्षण किया समाधान आप आवेदन कर सकते हैं (बस से पहले कुछ मिनट कार्यान्वित) है।

नया उपयोगकर्ता खाता बनाने के लिए आपको FirebaseAuth के संदर्भ की आवश्यकता है। onCreate में

private FirebaseAuth mAuth1; 
private FirebaseAuth mAuth2; 

अब आप उन्हें प्रारंभ कर सकते हैं::

तो तुम जैसे दो अलग FirebaseAuth वस्तुओं बना सकते हैं

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register); 

     mAuth1 = FirebaseAuth.getInstance(); 

     FirebaseOptions firebaseOptions = new FirebaseOptions.Builder() 
       .setDatabaseUrl("[Database_url_here]") 
       .setApiKey("Web_API_KEY_HERE") 
       .setApplicationId("PROJECT_ID_HERE").build(); 

     FirebaseApp myApp = FirebaseApp.initializeApp(getApplicationContext(),firebaseOptions, 
       "AnyAppName"); 

     mAuth2 = FirebaseAuth.getInstance(myApp); 
//..... other code here 
} 

ProjectID पाने के लिए, वेबएपीआई कुंजी आप सेटिंग्स को प्रोजेक्ट पर जा सकते हैं आपके फायरबेस परियोजना कंसोल में।

अब आप mAuth2, नहीं mAuth1 उपयोग करने के लिए उपयोगकर्ता खाता बनाने के लिए। और फिर सफल पंजीकरण पर, आप उस mAuth2 उपयोगकर्ता को लॉग आउट कर सकते हैं।

उदाहरण:

private void createAccount(String email, String password) 
    { 
     mAuth2.createUserWithEmailAndPassword(email, password) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 


         if (!task.isSuccessful()) { 
          String ex = task.getException().toString(); 
          Toast.makeText(RegisterActivity.this, "Registration Failed"+ex, 
            Toast.LENGTH_LONG).show(); 
         } 
         else 
         { 
          Toast.makeText(RegisterActivity.this, "Registration successful", 
            Toast.LENGTH_SHORT).show(); 
          mAuth2.signOut(); 
         } 



         // ... 
        } 
       }); 

    } 

बिंदु है जहां आप (वास्तव में) चिंता करने की ज़रूरत:

व्यवस्थापक केवल नए उपयोगकर्ता खाते बनाने में सक्षम होना चाहिए। लेकिन उपर्युक्त समाधान सभी प्रमाणीकृत उपयोगकर्ता को एक नया उपयोगकर्ता खाता बनाने की अनुमति दे रहा है।

इसलिए इस समस्या को हल करने के लिए आप अपने फायरबेस रीयल-टाइम डेटाबेस की मदद ले सकते हैं। बस "is_user_admin" जैसी कुंजी जोड़ें और मान को कंसोल से true के रूप में सेट करें। कोई नया उपयोगकर्ता खाता बनाने की कोशिश करने से पहले आपको उपयोगकर्ता को सत्यापित करने की आवश्यकता है। और इस दृष्टिकोण का उपयोग करके आप अपना खुद का व्यवस्थापक सेट कर सकते हैं।

अभी तक, मुझे नहीं लगता कि एंड्रॉइड के लिए firebase-admin SDK है। तो कोई उपरोक्त दृष्टिकोण का उपयोग कर सकते हैं।

+0

मैं आपको उत्तर देने की सराहना करता हूं, लेकिन यह मेरी समस्या का समाधान नहीं करता है, यह उपयोगकर्ता को सिस्टम से बाहर लॉग करेगा और उन्हें फिर से लॉग इन करने की आवश्यकता होगी व्यवस्थापक, मैं केवल व्यवस्थापक उपयोगकर्ता के रूप में लॉग इन रहना चाहता हूं और नई एसी बनाना चाहता हूं, व्यवस्थापक उपयोगकर्ता कई खाते बना सकता है, इसलिए प्रत्येक के बाद लॉग आउट और बैक इन व्यावहारिक नहीं है – RoRo88

+0

@ RoRo88: परीक्षण के बाद मेरा उत्तर अपडेट किया गया। अब यह आपकी समस्या का समाधान करेगा –

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