Как получить данные другого пользователя из firebase? - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу, когда пользователь нажимает на профиль администратора, пользователь может видеть информацию администратора.Я использую currentUser, чтобы получить идентификатор текущего пользователя, который уже вошел в приложения.

Я пытаюсь узнать, как получить данные другого пользователя.

    String currentuser = FirebaseAuth.getInstance().getCurrentUser().getUid();


    // init firebase database
    mUserDatabaseReference = FirebaseDatabase.getInstance().getReference("Users");

    mUserDatabaseReference.child(currentuser).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


            // here using Picasso for get the image url and set in ImageView
            String imageUrl = dataSnapshot.child("profile_pic").getValue().toString();
            Picasso.with(AboutCompany_for_users.this).load(imageUrl).into(companyPhoto);


            String name = dataSnapshot.child("name").getValue().toString();
            String email = dataSnapshot.child("email").getValue().toString();
            String phone = dataSnapshot.child("mobile").getValue().toString();
            String busesNumbers = dataSnapshot.child("buses_numbers").getValue().toString();
            String lineName = dataSnapshot.child("bus_line").getValue().toString();


            // here we get the data from
            companyName.setText(name);
            companyEmail.setText(email);
            companyPhone.setText(phone);
            companyBusesNumbers.setText(busesNumbers);
            companyLineName.setText(lineName);

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

    driversInformations.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent driversInfo = new Intent(AboutCompany_for_users.this, CompanyDrivers.class);
            startActivity(driversInfo);
        }
    });

Я ожидаю, когда пользовательнажмите на профиль администратора показать информацию администратора, а не информацию о текущем пользователе

Ответы [ 3 ]

0 голосов
/ 29 апреля 2019

Вы можете создать Firebase cloud functions и вызывать эту функцию из своего приложения Android Далее, в рамках этой функции вы можете получить данные соответствующего пользователя и в результате вернуть их в ваше приложение Android.

0 голосов
/ 01 мая 2019

Создайте облачные функции и используйте Firebase Admin SDK.

Вы можете получить данные другого пользователя по uid, электронной почте или номеру телефона.

И вы можете перечислить каждого пользователя максимум по 1000.

Если вы создаете облачные функции с помощью node.js, то код выглядит следующим образом.

// get another user data by uid
exports.getUser = functions.https.onCall(async (data, context) => {
  try {
    // if you want to deny unauthorized user
    // - context.auth.token.xxx is customClaims. (if you use)
    // if (context.auth || context.auth.uid || context.auth.token.xxx) {
    //   return Promise.reject("unauthorized");
    // }

    const user = await admin.auth().getUser(data.uid);
    return {
      displayName: user.displayName,
      email: user.email,
      photoURL: user.photoURL
    };
  } catch (error) {
    // If user does not exist
    if (error.code === "auth/user-not-found") {
      return {};
    }
    throw error;
  }
});

См .:

0 голосов
/ 29 апреля 2019

Вы не можете запрашивать учетные записи других пользователей в Firebase Authentication из кода клиента. Вам придется либо

  1. Сохраните данные другого пользователя в базе данных и запросите эту базу данных.
  2. Вызовите некоторый внутренний код и используйте Firebase Admin SDK для выполнения запроса и верните его клиенту.

Обычно люди выбирают вариант 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...