당신이 사용자의 자동 생성 된 ID는 단순히 FirebaseAuth을 가져오고 몇 줄의 코드로 각 사용자의 고유 ID를 가질 수 싶어 감안할 때 UPDATE
. 데이터가 자동으로 동기화되므로 명시 적으로 서버에 보내는 것에 대해 걱정할 필요가 없습니다. JSON 트리를 빌드 할 때 코드에서 필요할 때마다 user-id를 사용하면됩니다. 데이터에 추가하려는 경우 이미 다른 데이터 요소에 대해 사용하고있는 쉬운 프로세스이기도합니다. 주석에서 언급 한 대부분은 이미 SDK 내에서 작동합니다. 따라서 처음부터 이러한 기능을 재발견 할 필요가 없습니다.
아래 코드는 활동 내에서 인증을 사용하도록 설정하는 데 사용됩니다.
private FirebaseAuth mAuth;
// ...
mAuth = FirebaseAuth.getInstance();
EmailPasswordActivity.java
워드 프로세서에서이 간단한 예제
는
private FirebaseAuth.AuthStateListener mAuthListener;
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
// ...
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
EmailPasswordActivity.java
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithEmail:onComplete:" + task.isSuccessful());
// 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()) {
Log.w(TAG, "signInWithEmail:failed", task.getException());
Toast.makeText(EmailPasswordActivity.this, R.string.auth_failed,
Toast.LENGTH_SHORT).show();
}
// ...
}
});
EmailPasswordActivity.java
이 샘플 코드는 암호를 요구 witho 익명 사용자를 인증하는 방법을 보여줍니다 ... 이메일과 비밀번호를 사용하여 누군가를 인증하는 방법을 보여줍니다.
private FirebaseAuth.AuthStateListener mAuthListener;
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
// ...
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
AnonymousAuthActivity.java
mAuth.signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInAnonymously:onComplete:" + task.isSuccessful());
// 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()) {
Log.w(TAG, "signInAnonymously", task.getException());
Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
AnonymousAuthActivity.java
(FirebaseAuth Guide)
오프라인 데이터 동기화 활성화 : 당신은 또한 할 수 로컬로 저장 될 데이터 트리의 특정 지점을 강제하려면 (Data offline info)
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
을 해당 위치를 참조하고 keepSynced 함수를 true로 전달합니다. 헤더의 의견을 나타냅니다
이 위치에
keepSynced:YES
를 호출하여/** *
, 해당 위치에 대한 데이터가 자동으로 다운로드되고 *가 동기화를 유지, 청취자가 그 위치에 장착되지 않은 경우에도 . 또한 위치가 * 동기화 상태로 유지되는 동안 영구 디스크 캐시에서 제거되지 않습니다. * * @param keepSynced이 위치를 동기화하려면 YES를 전달하고 동기화를 중지하려면 NO를 전달하십시오. */
ORIGINAL 답변
난 당신이 website에 안드로이드에 대한 샘플 코드를 체크 아웃 할 수 있습니다 생각합니다. 기본적으로 push(). getKey()는 자동 생성 된 id를 반드시 반환해야한다고 생각합니다. 필자가 이것을 버리면 게시 작업이 자동으로 키를 생성합니다.
private void writeNewPost(String userId, String username, String title, String body) {
// Create new post at /user-posts/$userid/$postid and at
// /posts/$postid simultaneously
String key = mDatabase.child("posts").push().getKey();
Post post = new Post(userId, username, title, body);
Map<String, Object> postValues = post.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/posts/" + key, postValues);
childUpdates.put("/user-posts/" + userId + "/" + key, postValues);
mDatabase.updateChildren(childUpdates);
}
FIrebaseAuth.getInstance가().에 getCurrent(). getUid()가 –
이 ADDUSER 내부에서 발생하는()? –
실제로 인터넷에 연결되어 있지 않다면 DB에 저장 한 다음 서버에 연결하면 모든 db 데이터를 서버에 보내십시오.이 이유는 무엇입니까? – Alex