Add link with facebook credential (#527)
diff --git a/packages/firebase_auth/CHANGELOG.md b/packages/firebase_auth/CHANGELOG.md index 11dd6e7..9ee0799 100644 --- a/packages/firebase_auth/CHANGELOG.md +++ b/packages/firebase_auth/CHANGELOG.md
@@ -1,3 +1,7 @@ +## 0.5.6 + +* Added support for linkWithFacebookCredential + ## 0.5.5 * Updated Google Play Services dependencies to version 15.0.0.
diff --git a/packages/firebase_auth/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin.java b/packages/firebase_auth/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin.java index fc4ca55..a42c591 100755 --- a/packages/firebase_auth/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin.java +++ b/packages/firebase_auth/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin.java
@@ -89,6 +89,9 @@ case "linkWithGoogleCredential": handleLinkWithGoogleCredential(call, result); break; + case "linkWithFacebookCredential": + handleLinkWithFacebookCredential(call, result); + break; case "updateProfile": handleUpdateProfile(call, result); break; @@ -201,6 +204,17 @@ .addOnCompleteListener(new SignInCompleteListener(result)); } + private void handleLinkWithFacebookCredential(MethodCall call, final Result result) { + @SuppressWarnings("unchecked") + Map<String, String> arguments = (Map<String, String>) call.arguments; + String accessToken = arguments.get("accessToken"); + AuthCredential credential = FacebookAuthProvider.getCredential(accessToken); + firebaseAuth + .getCurrentUser() + .linkWithCredential(credential) + .addOnCompleteListener(new SignInCompleteListener(result)); + } + private void handleSignInWithFacebook(MethodCall call, final Result result) { @SuppressWarnings("unchecked") Map<String, String> arguments = (Map<String, String>) call.arguments;
diff --git a/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m b/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m index fb45411..86df706 100644 --- a/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m +++ b/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m
@@ -146,6 +146,13 @@ completion:^(FIRUser *user, NSError *error) { [self sendResult:result forUser:user error:error]; }]; + } else if ([@"linkWithFacebookCredential" isEqualToString:call.method]) { + NSString *accessToken = call.arguments[@"accessToken"]; + FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:accessToken]; + [[FIRAuth auth].currentUser linkWithCredential:credential + completion:^(FIRUser *user, NSError *error) { + [self sendResult:result forUser:user error:error]; + }]; } else if ([@"updateProfile" isEqualToString:call.method]) { FIRUserProfileChangeRequest *changeRequest = [[FIRAuth auth].currentUser profileChangeRequest]; if (call.arguments[@"displayName"]) {
diff --git a/packages/firebase_auth/lib/firebase_auth.dart b/packages/firebase_auth/lib/firebase_auth.dart index 6a887de..1f814bb 100755 --- a/packages/firebase_auth/lib/firebase_auth.dart +++ b/packages/firebase_auth/lib/firebase_auth.dart
@@ -309,6 +309,20 @@ return currentUser; } + Future<FirebaseUser> linkWithFacebookCredential({ + @required String accessToken, + }) async { + assert(accessToken != null); + final Map<dynamic, dynamic> data = await channel.invokeMethod( + 'linkWithFacebookCredential', + <String, String>{ + 'accessToken': accessToken, + }, + ); + final FirebaseUser currentUser = new FirebaseUser._(data); + return currentUser; + } + Future<Null> _callHandler(MethodCall call) async { switch (call.method) { case "onAuthStateChanged":
diff --git a/packages/firebase_auth/pubspec.yaml b/packages/firebase_auth/pubspec.yaml index 2fc862d..27fca49 100755 --- a/packages/firebase_auth/pubspec.yaml +++ b/packages/firebase_auth/pubspec.yaml
@@ -4,7 +4,7 @@ and Twitter. author: Flutter Team <flutter-dev@googlegroups.com> homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_auth -version: 0.5.5 +version: 0.5.6 flutter: plugin: