|
1 | 1 | var appModule = require("application"); |
| 2 | +var utils = require("utils/utils"); |
2 | 3 | var fs = require("file-system"); |
3 | 4 | var firebase = require("./firebase-common"); |
4 | 5 |
|
5 | 6 | firebase._launchNotification = null; |
6 | 7 |
|
| 8 | +var fbCallbackManager = null; |
| 9 | + |
7 | 10 | (function() { |
8 | 11 | if (typeof(com.google.firebase.messaging) === "undefined") { |
9 | 12 | return; |
@@ -183,9 +186,19 @@ firebase.init = function (arg) { |
183 | 186 | return; |
184 | 187 | } |
185 | 188 | firebase.storage = com.google.firebase.storage.FirebaseStorage.getInstance().getReferenceFromUrl(arg.storageBucket); |
186 | | - } |
| 189 | + } |
| 190 | + |
| 191 | + if (typeof(com.facebook) !== "undefined") { |
| 192 | + com.facebook.FacebookSdk.sdkInitialize(appModule.android.context); |
| 193 | + fbCallbackManager = com.facebook.CallbackManager.Factory.create(); |
| 194 | + appModule.android.on("activityResult",function(eventData){ |
| 195 | + fbCallbackManager.onActivityResult(eventData.requestCode, eventData.resultCode, eventData.intent); |
| 196 | + }) |
| 197 | + } |
187 | 198 |
|
188 | | - resolve(firebase.instance); |
| 199 | + |
| 200 | + |
| 201 | + resolve(firebase.instance); |
189 | 202 | } catch (ex) { |
190 | 203 | console.log("Error in firebase.init: " + ex); |
191 | 204 | reject(ex); |
@@ -375,7 +388,7 @@ firebase.getCurrentUser = function (arg) { |
375 | 388 | uid: user.getUid(), |
376 | 389 | name: user.getDisplayName(), |
377 | 390 | email: user.getEmail(), |
378 | | - profileImageURL: user.getPhotoUrl() |
| 391 | + profileImageURL: user.getPhotoUrl() ? user.getPhotoUrl().toString() : null |
379 | 392 | }); |
380 | 393 | } else { |
381 | 394 | reject(); |
@@ -416,7 +429,7 @@ function toLoginResult(user) { |
416 | 429 | name: user.getDisplayName(), |
417 | 430 | email: user.getEmail(), |
418 | 431 | // expiresAtUnixEpochSeconds: authData.getExpires(), |
419 | | - profileImageURL: user.getPhotoUrl() |
| 432 | + profileImageURL: user.getPhotoUrl() ? user.getPhotoUrl().toString() : null |
420 | 433 | // token: user.getToken() // can be used to auth with a backend server |
421 | 434 | }; |
422 | 435 | } |
@@ -479,29 +492,34 @@ firebase.login = function (arg) { |
479 | 492 | return; |
480 | 493 | } |
481 | 494 |
|
482 | | - // TODO see https://firebase.google.com/docs/auth/android/facebook-login#authenticate_with_firebase |
483 | 495 | var fbLoginManager = com.facebook.login.LoginManager.getInstance(); |
484 | | - var callbackManager = com.facebook.CallbackManager.Factory.create(); |
485 | | - |
486 | 496 | 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 | | - }) |
| 497 | + fbCallbackManager, |
| 498 | + new com.facebook.FacebookCallback({ |
| 499 | + onSuccess: function (loginResult) { |
| 500 | + var token = loginResult.getAccessToken().getToken(); |
| 501 | + var authCredential = com.google.firebase.auth.FacebookAuthProvider.getCredential(token); |
| 502 | + firebaseAuth.signInWithCredential(authCredential).addOnCompleteListener(onCompleteListener); |
| 503 | + }, |
| 504 | + onCancel: function() { |
| 505 | + reject("Facebook Login canceled"); |
| 506 | + }, |
| 507 | + onError: function(ex) { |
| 508 | + reject("Error while trying to login with Fb "+ex); |
| 509 | + } |
| 510 | + }) |
494 | 511 | ); |
495 | 512 |
|
496 | | - var permissions = ["public_profile", "email"]; |
| 513 | + var permissions = utils.ad.collections.stringArrayToStringSet(["public_profile", "email"]); |
497 | 514 | var activity = appModule.android.foregroundActivity; |
498 | | - fbLoginManager.logInWithReadPermissions(foregroundActivity, permissions); |
| 515 | + fbLoginManager.logInWithReadPermissions(activity, permissions); |
499 | 516 |
|
500 | 517 | } else { |
501 | 518 | reject ("Unsupported auth type: " + arg.type); |
502 | 519 | } |
503 | 520 | } |
504 | 521 |
|
| 522 | + |
505 | 523 | try { |
506 | 524 | if (appModule.android.foregroundActivity) { |
507 | 525 | _resolve(); |
|
0 commit comments