दिलचस्प पोस्ट
Microsoft.Phone.Media.Extended तक पहुंचने का प्रयास करते समय प्रतिबिंब विफलता सबमिट करने के बाद HTML प्रपत्र पुनर्निर्देशन Google oauth2 में अवैध_क्लाइन नाम स्थान वाले XDocument स्विफ्ट (2.0) में एनएसजेएसओएनएसरिअलाइज़ेशन (कैच करने की कोशिश) का सही संभालना? स्ट्रिंग स्ट्रिंग करते समय खाली आइटमों को निकालने के पीछे मैं कैसे बचूं? कैसे एक AlertDialog में एक छवि डाल करने के लिए? एंड्रॉयड एंड्रॉइड ऑनक्लिकलेस्टनर – एक बटन की पहचान करें यादृच्छिक क्यों होता है। जब मुझे एक PHP वर्ग में चर घोषित करना चाहिए? सरणी से निकटतम मान 5 सॉर्ट किए गए एरे के मध्य घातक त्रुटि: कक्षा 'ज़िपअर्चिव' में नहीं मिला स्विंग अवयव रचना करना: मैं ActionListeners जोड़ने की क्षमता कैसे जोड़ूं? Django टेम्पलेट में इंडेक्स द्वारा संदर्भ सूची आइटम?

अगर मैं फ़ायरबेस सरल यूज़रनेम और पासवर्ड प्रमाणीकरण का उपयोग करता हूं तो मैं उपयोगकर्ताओं की सूची कैसे वापस करूँ?

निश्चित नहीं कि मैं कुछ गलत कर रहा हूं लेकिन इस एपीआई का उपयोग कर https://www.firebase.com/docs/security/simple-login-email-password.html वापसी संदेश के अनुसार मैं सफलतापूर्वक एक उपयोगकर्ता बना सकता हूं, लेकिन मैं उस उपयोगकर्ता को फोर्ज कंसोल में कहीं भी नहीं देख सकता आप कैसे जानते हैं कि उपयोगकर्ता किन पंजीकृत हैं?

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

Solutions Collecting From Web of "अगर मैं फ़ायरबेस सरल यूज़रनेम और पासवर्ड प्रमाणीकरण का उपयोग करता हूं तो मैं उपयोगकर्ताओं की सूची कैसे वापस करूँ?"

जब फ़ायरबेज प्रमाणीकरण (पहले से फ़ायरबेस सिमलॉगिन के नाम से जाना जाता है) में ई-मेल / पासवर्ड प्रमाणीकरण का उपयोग करते हुए, आपके उपयोगकर्ता का ईमेल और पासवर्ड संयोजन सुरक्षित रूप से आपके फायरबेज में संग्रहीत डेटा से सुरक्षित रूप से संग्रहीत होता है

आपके फायरबसे और आपके उपयोगकर्ताओं के ईमेल / पासवर्ड हैश संयोजन में डेटा के बीच यह बाधा डिजाइन द्वारा है: हम आपके लिए अपने ऐप्लिकेशन को विकसित करना (1) को आसान बनाना चाहते हैं, (2) किसी भी आकस्मिक उपयोगकर्ता क्रेडेंशियल लीक को रोकने और (3 ) अभी भी आपको फायरबेज में अपने उपयोगकर्ता डेटा को स्टोर करने के तरीके के साथ कुल लचीलापन प्रदान करते हैं।

इसका मतलब है कि हम केवल ईमेल पता / पासवर्ड हैश संयोजन और अन्य कुछ नहीं संग्रहित करते हैं, इसलिए यह तय करना है कि अपने फ़ायरबेज में वास्तविक उपयोगकर्ता डेटा कैसे संग्रहीत करें। जैसा कि आपने सुझाव दिया है, आपको यूजर आईडी लेना चाहिए और उस डेटा को अपने फायरबेज में एक स्थान जैसे / users / $ id में संग्रहीत करना चाहिए और उस डाटा को पढ़ने / लिखने की पहुंच निर्धारित करने के लिए फायरबसे सुरक्षा नियमों का उपयोग करना चाहिए। आपके उपयोगकर्ता के अद्वितीय id और email पहले से ही auth चर में हैं जो आप नियम लिखते समय उपयोग करेंगे।

यहां मैंने एंड्रॉइड प्रोग्राम बनाया जो रॉब ने फायरबेज शुरुआत के लिए कहा (मेरे जैसे) के लिए कहा। इस कार्यक्रम को पहले साइन अप या साइन इन उपयोगकर्ता के उपयोगकर्ता नाम को स्टोर करते हैं और फिर उन्हें सूची में दिखाएं

SignInActivity.java

 public class SignInActivity extends BaseActivity implements View.OnClickListener,View.OnKeyListener{ private DatabaseReference mDatabase; public static FirebaseAuth mAuth; private static final String TAG = "MainActivity"; EditText usernameField; EditText passwordField; TextView changeSignUpModeTextView; Button signUpButton; ImageView logo; RelativeLayout relativeLayout; Boolean signUpModeActive; static ArrayList<String> userList = new ArrayList<>(); @Override public void onStart() { super.onStart(); // Check auth on Activity start if (mAuth.getCurrentUser() != null) { onAuthSuccess(mAuth.getCurrentUser()); } } @Override public boolean onKey(View view, int i, KeyEvent keyEvent) { if(i == keyEvent.KEYCODE_ENTER && keyEvent.getAction() == keyEvent.ACTION_DOWN){ signUpOrLogIn(view); } return false; } @Override public void onClick(View view) { if(view.getId() == R.id.changeSignUpMode){ if (signUpModeActive == true){ signUpModeActive = false; changeSignUpModeTextView.setText("Sign Up"); signUpButton.setText("Log In"); }else{ signUpModeActive = true; changeSignUpModeTextView.setText("Log In"); signUpButton.setText("Sign Up"); } }else if(view.getId() == R.id.logo || view.getId() == R.id.relativeLayout){ InputMethodManager inm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); inm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),0); } } public void signUpOrLogIn(View view) { showProgressDialog(); String email = usernameField.getText().toString().trim(); String password = passwordField.getText().toString().trim(); if (signUpModeActive == true) { mAuth.createUserWithEmailAndPassword(email,password) .addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { hideProgressDialog(); Toast.makeText(MainActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show(); // If sign in fails, display a message to the user. If sign in succeeds // the auth state listener will be notified and logic to handle the // signed in user can be handled in the listener. if (!task.isSuccessful()) { Toast.makeText(MainActivity.this, "Authentication failed." + task.getException().toString().substring(task.getException().toString().indexOf(" ")), Toast.LENGTH_SHORT).show(); Log.i("Error", task.getException().toString()); } else { onAuthSuccess(task.getResult().getUser()); showUserList(); } } }); } else { mAuth.signInWithEmailAndPassword(email,password) .addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { hideProgressDialog(); // If sign in fails, display a message to the user. If sign in succeeds // the auth state listener will be notified and logic to handle the // signed in user can be handled in the listener. if (!task.isSuccessful()) { // there was an error Toast.makeText(MainActivity.this, task.getException().toString(), Toast.LENGTH_LONG).show(); } else { onAuthSuccess(task.getResult().getUser()); showUserList(); } } }); } } public void showUserList(){ startActivity(new Intent(getApplicationContext(), UserList.class)); finish(); } private void onAuthSuccess(FirebaseUser user) { String username = usernameFromEmail(user.getEmail()); // Write new user writeNewUser(user.getUid(), username, user.getEmail()); // Go to MainActivity } private String usernameFromEmail(String email) { if (email.contains("@")) { return email.split("@")[0]; } else { return email; } } private void writeNewUser(String userId, String name, String email) { User user = new User(name, email); mDatabase.child("users").child(userId).setValue(user); ArrayList<String> userNames = new ArrayList<>(); userNames.add(name); mDatabase.child("usernamelist").setValue(userNames); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAuth = FirebaseAuth.getInstance(); mDatabase = FirebaseDatabase.getInstance().getReference(); if(mAuth.getCurrentUser()!=null){ showUserList(); } usernameField = (EditText) findViewById(R.id.username); passwordField = (EditText) findViewById(R.id.password); changeSignUpModeTextView = (TextView) findViewById(R.id.changeSignUpMode); signUpButton = (Button) findViewById(R.id.signupbutton); logo = (ImageView)findViewById(R.id.logo); relativeLayout= (RelativeLayout)findViewById(R.id.relativeLayout); signUpModeActive = true; changeSignUpModeTextView.setOnClickListener(this); usernameField.setOnKeyListener(this); passwordField.setOnKeyListener(this); logo.setOnClickListener(this); relativeLayout.setOnClickListener(this); } } 

UserList.java

 public class UserList extends AppCompatActivity { private static final String TAG = "UserList" ; private DatabaseReference userlistReference; private ValueEventListener mUserListListener; ArrayList<String> usernamelist = new ArrayList<>(); ArrayAdapter arrayAdapter;; ListView userListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_list); userlistReference = FirebaseDatabase.getInstance().getReference().child("usernamelist"); onStart(); userListView = (ListView) findViewById(R.id.userlistview); } @Override protected void onStart() { super.onStart(); final ValueEventListener userListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { usernamelist = new ArrayList<>((ArrayList) dataSnapshot.getValue()); usernamelist.remove(usernameOfCurrentUser()); Log.i(TAG, "onDataChange: "+usernamelist.toString()); arrayAdapter = new ArrayAdapter(UserList.this,android.R.layout.simple_list_item_1,usernamelist); userListView.setAdapter(arrayAdapter); } @Override public void onCancelled(DatabaseError databaseError) { Log.w(TAG, "onCancelled: ",databaseError.toException()); Toast.makeText(UserList.this, "Failed to load User list.", Toast.LENGTH_SHORT).show(); } }; userlistReference.addValueEventListener(userListener); mUserListListener = userListener; } public String usernameOfCurrentUser() { String email = MainActivity.mAuth.getCurrentUser().getEmail(); if (email.contains("@")) { return email.split("@")[0]; } else { return email; } } @Override public void onStop() { super.onStop(); // Remove post value event listener if (mUserListListener != null) { userlistReference.removeEventListener(mUserListListener); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.action_logout: FirebaseAuth.getInstance().signOut(); startActivity(new Intent(this, MainActivity.class)); finish(); return true; default: return super.onOptionsItemSelected(item); } } 

}

आप अपने फ़ायरबेज प्रोजेक्ट में सभी पंजीकृत उपयोगकर्ताओं की सूची प्राप्त करने के लिए Google पहचान टूलकिट एपीआई का उपयोग कर सकते हैं, इस एपीआई को फायरबेज सीएलआई द्वारा उपयोग किया जाता है जिसे फायरबेस ऑथ चल रहा है firebase auth:export results-file

सुनिश्चित करें कि पहचान टूलकिट एपीआई सक्षम है

firebase-उन-list.js

 const serviceAccount = require('path/to/firebase-sdk-json-service-account'); const googleapis = require('googleapis'); const identitytoolkit = googleapis.identitytoolkit('v3'); const authClient = new googleapis.auth.JWT( serviceAccount.client_email, null, serviceAccount.private_key, ['https://www.googleapis.com/auth/firebase'], null ); authClient.authorize((err) => { if (err) { return console.error(err); } let nextPageToken = undefined; let users = []; const getAccounts = () => identitytoolkit.relyingparty.downloadAccount({ auth: authClient, resource: { targetProjectId: serviceAccount.project_id, maxResults: 200, nextPageToken: nextPageToken } }, (e, results) => { if (e) { return console.error(err); } users = users.concat(results.users); if (results.nextPageToken) { nextPageToken = results.nextPageToken; return getAccounts(); } else { console.log(users); } }); getAccounts(); });