Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit 2b51a17

Browse files
#68 firebase.login error
1 parent 242b792 commit 2b51a17

File tree

1 file changed

+100
-81
lines changed

1 file changed

+100
-81
lines changed

firebase.android.js

Lines changed: 100 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -261,25 +261,26 @@ firebase.getRemoteConfigDefaults = function (properties) {
261261
};
262262

263263
firebase._isGooglePlayServicesAvailable = function () {
264-
var context = appModule.android.foregroundActivity;
264+
var context = appModule.android.context;
265265
var playServiceStatusSuccess = com.google.android.gms.common.ConnectionResult.SUCCESS; // 0
266266
var playServicesStatus = com.google.android.gms.common.GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
267267
return playServicesStatus === playServiceStatusSuccess;
268268
};
269269

270270
firebase.getRemoteConfig = function (arg) {
271271
return new Promise(function (resolve, reject) {
272-
try {
273-
if (typeof(com.google.firebase.remoteconfig) === "undefined") {
274-
reject("Uncomment firebase-config in the plugin's include.gradle first");
275-
return;
276-
}
277272

278-
if (arg.properties === undefined) {
279-
reject("Argument 'properties' is missing");
280-
return;
281-
}
273+
if (typeof(com.google.firebase.remoteconfig) === "undefined") {
274+
reject("Uncomment firebase-config in the plugin's include.gradle first");
275+
return;
276+
}
277+
278+
if (arg.properties === undefined) {
279+
reject("Argument 'properties' is missing");
280+
return;
281+
}
282282

283+
function _resolve() {
283284
if (!firebase._isGooglePlayServicesAvailable()) {
284285
reject("Google Play services is required for this feature, but not available on this device");
285286
return;
@@ -342,6 +343,15 @@ firebase.getRemoteConfig = function (arg) {
342343
firebaseRemoteConfig.fetch(expirationDuration)
343344
.addOnSuccessListener(onSuccessListener)
344345
.addOnFailureListener(onFailureListener);
346+
}
347+
348+
try {
349+
if (appModule.android.foregroundActivity) {
350+
_resolve();
351+
} else {
352+
// if this is called before application.start() wait for the event to fire
353+
appModule.on(appModule.launchEvent, _resolve);
354+
}
345355
} catch (ex) {
346356
console.log("Error in firebase.getRemoteConfig: " + ex);
347357
reject(ex);
@@ -413,87 +423,96 @@ function toLoginResult(user) {
413423

414424
firebase.login = function (arg) {
415425
return new Promise(function (resolve, reject) {
416-
try {
417-
if (!firebase._isGooglePlayServicesAvailable()) {
418-
reject("Google Play services is required for this feature, but not available on this device");
419-
return;
420-
}
421426

422-
var firebaseAuth = com.google.firebase.auth.FirebaseAuth.getInstance();
423-
var onCompleteListener = new com.google.android.gms.tasks.OnCompleteListener({
424-
onComplete: function (task) {
425-
// alert("login task: " + task.isSuccessful());
426-
if (!task.isSuccessful()) {
427-
reject("Logging in the user failed. " + (task.getException() && task.getException().getReason ? task.getException().getReason() : task.getException()));
427+
function _resolve() {
428+
if (!firebase._isGooglePlayServicesAvailable()) {
429+
reject("Google Play services is required for this feature, but not available on this device");
430+
return;
431+
}
432+
433+
var firebaseAuth = com.google.firebase.auth.FirebaseAuth.getInstance();
434+
var onCompleteListener = new com.google.android.gms.tasks.OnCompleteListener({
435+
onComplete: function (task) {
436+
if (!task.isSuccessful()) {
437+
reject("Logging in the user failed. " + (task.getException() && task.getException().getReason ? task.getException().getReason() : task.getException()));
438+
} else {
439+
var user = task.getResult().getUser();
440+
resolve(toLoginResult(user));
441+
}
442+
}
443+
});
444+
445+
if (arg.type === firebase.LoginType.ANONYMOUS) {
446+
// var onFailureListener = new com.google.android.gms.tasks.OnFailureListener({
447+
// onFailure: function (throwable) {
448+
// reject("Anonymous login failed with message: " + throwable.getMessage());
449+
// }
450+
// });
451+
// firebaseAuth.signInAnonymously().addOnFailureListener(onFailureListener);
452+
firebaseAuth.signInAnonymously().addOnCompleteListener(onCompleteListener);
453+
} else if (arg.type === firebase.LoginType.PASSWORD) {
454+
if (!arg.email || !arg.password) {
455+
reject("Auth type emailandpassword requires an email and password argument");
428456
} else {
429-
var user = task.getResult().getUser();
430-
resolve(toLoginResult(user));
457+
firebaseAuth.signInWithEmailAndPassword(arg.email, arg.password).addOnCompleteListener(onCompleteListener);
458+
}
459+
} else if (arg.type === firebase.LoginType.CUSTOM) {
460+
if (!arg.token && !arg.tokenProviderFn) {
461+
reject("Auth type custom requires a token or a tokenProviderFn argument");
462+
} else if (arg.token) {
463+
firebaseAuth.signInWithCustomToken(arg.token).addOnCompleteListener(onCompleteListener);
464+
} else if (arg.tokenProviderFn) {
465+
arg.tokenProviderFn()
466+
.then(
467+
function (token) {
468+
firebaseAuth.signInWithCustomToken(arg.token).addOnCompleteListener(onCompleteListener);
469+
},
470+
function (error) {
471+
reject(error);
472+
}
473+
);
431474
}
432-
}
433-
});
434475

435-
if (arg.type === firebase.LoginType.ANONYMOUS) {
436-
// var onFailureListener = new com.google.android.gms.tasks.OnFailureListener({
437-
// onFailure: function (throwable) {
438-
// reject("Anonymous login failed with message: " + throwable.getMessage());
439-
// }
440-
// });
441-
// firebaseAuth.signInAnonymously().addOnFailureListener(onFailureListener);
442-
firebaseAuth.signInAnonymously().addOnCompleteListener(onCompleteListener);
443-
} else if (arg.type === firebase.LoginType.PASSWORD) {
444-
if (!arg.email || !arg.password) {
445-
reject("Auth type emailandpassword requires an email and password argument");
446-
} else {
447-
firebaseAuth.signInWithEmailAndPassword(arg.email, arg.password).addOnCompleteListener(onCompleteListener);
448-
}
449-
} else if (arg.type === firebase.LoginType.CUSTOM) {
450-
if (!arg.token && !arg.tokenProviderFn) {
451-
reject("Auth type custom requires a token or a tokenProviderFn argument");
452-
} else if (arg.token) {
453-
firebaseAuth.signInWithCustomToken(arg.token).addOnCompleteListener(onCompleteListener);
454-
} else if (arg.tokenProviderFn) {
455-
arg.tokenProviderFn()
456-
.then(
457-
function (token) {
458-
firebaseAuth.signInWithCustomToken(arg.token).addOnCompleteListener(onCompleteListener);
459-
},
460-
function (error) {
461-
reject(error);
462-
}
463-
);
464-
}
476+
} else if (arg.type === firebase.LoginType.FACEBOOK) {
477+
if (typeof(com.facebook) === "undefined") {
478+
reject("Facebook SDK not installed - see gradle config");
479+
return;
480+
}
465481

466-
} else if (arg.type === firebase.LoginType.FACEBOOK) {
467-
if (typeof(com.facebook) === "undefined") {
468-
reject("Facebook SDK not installed - see gradle config");
469-
return;
470-
}
482+
// TODO see https://firebase.google.com/docs/auth/android/facebook-login#authenticate_with_firebase
483+
var fbLoginManager = com.facebook.login.LoginManager.getInstance();
484+
var callbackManager = com.facebook.CallbackManager.Factory.create();
471485

472-
// TODO see https://firebase.google.com/docs/auth/android/facebook-login#authenticate_with_firebase
473-
var fbLoginManager = com.facebook.login.LoginManager.getInstance();
474-
var callbackManager = com.facebook.CallbackManager.Factory.create();
486+
fbLoginManager.registerCallback(
487+
callbackManager,
488+
new com.facebook.FacebookCallback({
489+
onSuccess: function (loginResult) {
490+
console.log("------------- fb callback");
491+
console.log("------------- fb loginResult " + loginResult);
492+
}
493+
})
494+
);
475495

476-
fbLoginManager.registerCallback(
477-
callbackManager,
478-
new com.facebook.FacebookCallback({
479-
onSuccess: function (loginResult) {
480-
console.log("------------- fb callback");
481-
console.log("------------- fb loginResult " + loginResult);
482-
}
483-
})
484-
);
496+
var permissions = ["public_profile", "email"];
497+
var activity = appModule.android.foregroundActivity;
498+
fbLoginManager.logInWithReadPermissions(foregroundActivity, permissions);
485499

486-
var permissions = ["public_profile", "email"];
487-
var activity = appModule.android.foregroundActivity;
488-
fbLoginManager.logInWithReadPermissions(foregroundActivity, permissions);
500+
} else {
501+
reject ("Unsupported auth type: " + arg.type);
502+
}
503+
}
489504

490-
} else {
491-
reject ("Unsupported auth type: " + arg.type);
505+
try {
506+
if (appModule.android.foregroundActivity) {
507+
_resolve();
508+
} else {
509+
// if this is called before application.start() wait for the event to fire
510+
appModule.on(appModule.launchEvent, _resolve);
511+
}
512+
} catch (ex) {
513+
console.log("Error in firebase.login: " + ex);
514+
reject(ex);
492515
}
493-
} catch (ex) {
494-
console.log("Error in firebase.login: " + ex);
495-
reject(ex);
496-
}
497516
});
498517
};
499518

0 commit comments

Comments
 (0)