-
Notifications
You must be signed in to change notification settings - Fork 25
Authentication
Get currently signed-in user by Firebasebase.AuthStateChangeListener
.
It emits FirebaseAuth
object on each auth state changes until unsubscribed.
Note that RxFirebaseAuth.authStateChanges()
will emit initial value on subscribe.
Java:
RxFirebaseAuth.authStateChanges(FirebaseAuth.getInstance())
.subscribe(new Action1<FirebaseAuth>() {
@Override
public void call(FirebaseAuth firebaseAuth) {
// Do something on auth state changes.
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
// Handle error
}
});
Kotlin:
FirebaseAuth.getInstance().authStateChanges()
.subscribe({
// Do something on auth state changes.
}) {
// Handle error
}
Java:
RxFirebaseAuth.authStateChanges(FirebaseAuth.getInstance())
.subscribe(new Consumer<FirebaseAuth>() {
@Override
public void accept(FirebaseAuth firebaseAuth) {
// Do something on auth state changes
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) {
// Handle error
}
});
Kotlin:
FirebaseAuth.getInstance().authStateChanges()
.subscribe({
// Do something on auth state changes.
}) {
// Handle error
}
Get currently signed-in user by FirebaseAuth.getCurrentUser()
.
It emits FirebaseUser
object depends on user's signed-in state. It will emit nothing and completes its sequence when there is no signed-in user exists.
Java:
RxFirebaseAuth.getCurrentUser(FirebaseAuth.getInstance())
.subscribe(new Action1<FirebaseUser>() {
@Override
public void call(Optional<FirebaseUser> user) {
// Do something with user
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
// Handle error
}
});
Kotlin:
FirebaseAuth.getInstance().rxGetCurrentUser()
.subscribe({
// Do something with user
}) {
// Handle error
}
It uses more specific observable (Maybe
) to reflect its behavior.
Java:
RxFirebaseAuth.getCurrentUser(FirebaseAuth.getInstance())
.subscribe(new Consumer<FirebaseUser>() {
@Override
public void accept(FirebaseUser firebaseUser) {
// Do something with user
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) {
// Handle error
}
});
Kotlin:
FirebaseAuth.getInstance().rxGetCurrentUser()
.subscribe({
// Do something with user
}) {
// Handle error
}
Uses Anonymous Authentication for sign in. Note that it emits FirebaseUser
object of currently signed-in user.
Java:
RxFirebaseAuth.signInAnonymous(FirebaseAuth.getInstance())
.subscribe(new Action1<FirebaseUser>() {
@Override
public void call(FirebaseUser user) {
// Do something with anonymous user
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
// Handle error
}
});
Kotlin:
FirebaseAuth.getInstance().rxSignInAnonymous()
.subscribe({
// Do something with anonymous user
}) {
// Handle error
}
Java:
RxFirebaseAuth.signInAnonymous(FirebaseAuth.getInstance())
.subscribe(new Consumer<FirebaseUser>() {
@Override
public void accept(FirebaseUser user) {
// Do something with anonymous user
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) {
// Handle error
}
});
Kotlin:
FirebaseAuth.getInstance().rxSignInAnonymous()
.subscribe({
// Do something with anonymous user
}) {
// Handle error
}
For a method which returns Task<Void>
as a result, it is converted to Completable
.
Java:
FirebaseUser user = ...;
UserProfileChangeRequest request = new UserProfileChangeRequest.Builder()
.setDisplayName("John Doe")
.setPhotoUri(Uri.parse("http://my.photo/johndoe"))
.build();
RxFirebaseUser.updateProfile(user, request)
.subscribe(new Action0() {
@Override
public void call() {
// Update successful
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
// Update was not successful
}
});
Kotlin:
val user: FirebaseUser = ...
val request = UserProfileChangeRequest.Builder()
.setDisplayName("John Doe")
.setPhotoUri(Uri.parse("http://my.photo/johndoe"))
.build()
user.rxUpdateProfile(request)
.subscribe({
// Update successful
}) {
// Update was not successful
}
Java:
FirebaseUser user = ...;
UserProfileChangeRequest request = new UserProfileChangeRequest.Builder()
.setDisplayName("John Doe")
.setPhotoUri(Uri.parse("http://my.photo/johndoe"))
.build();
RxFirebaseUser.updateProfile(user, request)
.subscribe(new Action() {
@Override
public void run() {
// Update successful
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) {
// Update was not successful
}
});
Kotlin:
val user: FirebaseUser = ...
val request = UserProfileChangeRequest.Builder()
.setDisplayName("John Doe")
.setPhotoUri(Uri.parse("http://my.photo/johndoe"))
.build()
user.rxUpdateProfile(request)
.subscribe({
// Update successful
}) {
// Update was not successful
}