2017-01-04 4 views
0

Я реализовал процесс аутентификации с использованием Firebase, теперь мой пользователь должен иметь возможность добавлять данные и отображать их в пользовательском масштабе (каждый пользователь имеет свои собственные данные).Сделать базу данных Firebase специфичной для пользователя

Из того, что я читал, это, как я могу добавить данные в базу данных:

private void setData() { 
    // Write a message to the database 
    FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference myRef = database.getReference("Message"); 

    myRef.setValue("Hello World !"); 
} 

Но в консоли, данные, кажется, чтобы быть доступным для всех пользователей, является база данных Firebase то, что я должен использовать для хранения пользовательских данных? Если да, то как это может быть достигнуто?

Извините, если мой вопрос очевиден, но я довольно новичок в этих принципах.

ответ

2

Создайте уникальный идентификатор для каждого пользователя и разместите данные для каждого пользователя под этим уникальным идентификатором. Уникальный идентификатор может быть создан с использованием любого метода, который вам нравится, например, UDID устройства или просто получения firebase uid аутентифицированного пользователя. Например, может работать следующее, если вы хотите получить доступ к uid без Firebase.

private void setData() { 
    String uniqueId = java.util.UUID; 
    FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference myRef = database.getReference("Message"); 
    myRef.child(uniqueId).setValue("Hello World !"); 
} 

Однако рекомендуется использовать uid, генерируемый посредством проверки подлинности Firebase. Где первый пример разбивается, если один и тот же пользователь входит в систему на двух разных устройствах с использованием одной и той же учетной записи, что предотвратит их доступ к их собственным данным с исходного устройства, так как каждое устройство будет иметь разные uuids. С другой стороны, uid Firebase будет одинаковым на каждом устройстве, и поэтому тот же пользователь на обоих устройствах будет иметь доступ к тем же данным. Если вы хотите получить доступ к firebase uid (рекомендуется):

private void setData() { 
    FirebaseUser user = firebaseAuth.getCurrentUser(); 
    String uniqueId = user.getUid() 
    FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference myRef = database.getReference("Message"); 
    myRef.child(uniqueId).setValue("Hello World !"); 
} 
+1

Вместо генерации UUID я бы рекомендовал использовать анонимную аутентификацию. Это по сути одно и то же, но позже вы можете обновить эту анонимную учетную запись для обычной учетной записи пользователя. –

+0

Это также может работать, я также написал ответ в Swift и обновил его до Java, но концепция такая же. Если вы используете аутентификацию в любой форме, тогда UID генерируется и доступен через API. –

+0

Да, извините за неполную обратную связь. Ваш подход звучит вполне разумно, поэтому я оставляю комментарий вместо альтернативного ответа. :-) –

Смежные вопросы