From 9a2fc04541efcf314c38b6e0d68d9a99b2881f2f Mon Sep 17 00:00:00 2001 From: Cheol Date: Fri, 22 Jul 2016 18:22:46 +0900 Subject: [PATCH 1/4] add getToken --- firestack.ios.js | 7 +++++++ ios/Firestack/Firestack.m | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/firestack.ios.js b/firestack.ios.js index 9ad60c7..5a08aee 100644 --- a/firestack.ios.js +++ b/firestack.ios.js @@ -136,6 +136,13 @@ export default class Firestack { deleteUser() { return promisify('deleteUser')() } + /** + * get the token of current user + * @return {Promise} + */ + getToken() { + return promisify('getToken')() + } /** * Update the current user's profile diff --git a/ios/Firestack/Firestack.m b/ios/Firestack/Firestack.m index 38d17dd..5cc762f 100644 --- a/ios/Firestack/Firestack.m +++ b/ios/Firestack/Firestack.m @@ -326,6 +326,40 @@ @implementation Firestack }]; } +RCT_EXPORT_METHOD(getToken:(RCTResponseSenderBlock) callback) +{ + FIRUser *user = [FIRAuth auth].currentUser; + + [user getTokenWithCompletion:^(NSString *token, NSError *_Nullable error) { + if (error) { + NSDictionary *err = + [self handleFirebaseError:@"getTokenError" + error:error + withUser:user]; + callback(@[err]); + } else { + callback(@[[NSNull null], @{@"result": token}]); + } + }]; +} + +RCT_EXPORT_METHOD(getTokenWithCompletion:(RCTResponseSenderBlock) callback) +{ + FIRUser *user = [FIRAuth auth].currentUser; + + [user getTokenWithCompletion:^(NSString token , NSError *_Nullable error) { + if (error) { + NSDictionary *err = + [self handleFirebaseError:@"deleteUserError" + error:error + withUser:user]; + callback(@[err]); + } else { + callback(@[[NSNull null], @{@"result": token}]); + } + }]; +} + RCT_EXPORT_METHOD(reauthenticateWithCredentialForProvider: (NSString *)provider token:(NSString *)authToken From 9fd0865b4c843c4635e55a6badc891230fed6312 Mon Sep 17 00:00:00 2001 From: Cheol Date: Fri, 22 Jul 2016 18:28:08 +0900 Subject: [PATCH 2/4] update README --- README.md | 10 ++++++++++ ios/Firestack/Firestack.m | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ee668b..4ad9707 100644 --- a/README.md +++ b/README.md @@ -312,6 +312,16 @@ firestack.deleteUser() .catch(err => console.error('There was an error - Now you are trapped!')) ``` +#### getToken() + +If you want user's token, use `getToken()` method. + +```javascript +firestack.getToken() +.then(res => console.log(res.token)) +.catch(err => console.error('error')) +``` + #### signOut() To sign the current user out, use the `signOut()` method. It accepts no parameters diff --git a/ios/Firestack/Firestack.m b/ios/Firestack/Firestack.m index 5cc762f..0978e1b 100644 --- a/ios/Firestack/Firestack.m +++ b/ios/Firestack/Firestack.m @@ -338,7 +338,7 @@ @implementation Firestack withUser:user]; callback(@[err]); } else { - callback(@[[NSNull null], @{@"result": token}]); + callback(@[[NSNull null], @{@"token": token}]); } }]; } From 3099c74317e7093834cb05b430146ed6680e9cdc Mon Sep 17 00:00:00 2001 From: Cheol Date: Sat, 23 Jul 2016 17:51:40 +0900 Subject: [PATCH 3/4] add signInWithProvider with google, facebook --- README.md | 25 +++++++++++++++++++++++++ ios/Firestack/Firestack.m | 5 +++++ 2 files changed, 30 insertions(+) diff --git a/README.md b/README.md index 4ad9707..ae86ffd 100644 --- a/README.md +++ b/README.md @@ -250,6 +250,31 @@ authManager.authorizeWithCallbackURL('twitter', appUrl) }) ``` +### socialLogin with custom Library +If you don't want to use [react-native-oauth](https://github.com/fullstackreact/react-native-oauth), you can use other library such as [react-native-facebook-login](https://github.com/magus/react-native-facebook-login). + +```javascript +var {FBLogin, FBLoginManager} = require('react-native-facebook-login'); + +var Login = React.createClass({ + render: function() { + return ( + { + console.log(user) + }) + }} + /> + ); + } +}); +``` + If the `signInWithProvider()` method resolves correct and we have already set up our `listenForAuth()` method properly, it will fire and we'll have a logged in user through Firebase. ### reauthenticateWithCredentialForProvider() diff --git a/ios/Firestack/Firestack.m b/ios/Firestack/Firestack.m index 0978e1b..68a91f8 100644 --- a/ios/Firestack/Firestack.m +++ b/ios/Firestack/Firestack.m @@ -619,6 +619,11 @@ - (FIRAuthCredential *)getCredentialForProvider:(NSString *)provider if ([provider isEqualToString: @"twitter"]) { credential = [FIRTwitterAuthProvider credentialWithToken:authToken secret:authTokenSecret]; + } if ([provider isEqualToString: @"facebook"]) { + credential = [FIRFacebookAuthProvider credentialWithAccessToken:authToken]; + } if ([provider isEqualToString: @"google"]) { + credential = [FIRGoogleAuthProvider credentialWithToken:authToken + secret:authTokenSecret]; } else { NSLog(@"Provider not yet handled"); } From 7489f3aec17f2114c6811ace4579dd36a774321f Mon Sep 17 00:00:00 2001 From: Cheol Date: Mon, 25 Jul 2016 13:47:36 +0900 Subject: [PATCH 4/4] repair error --- .../xcschemes/Firestack.xcscheme | 80 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 22 +++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 10275 bytes ios/Firestack/Firestack.m | 6 +- .../xcschemes/Pods-Firestack.xcscheme | 80 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 22 +++++ 6 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 ios/Firestack.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/Firestack.xcscheme create mode 100644 ios/Firestack.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 ios/Firestack.xcworkspace/xcuserdata/Cheol.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/Pods/Pods.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/Pods-Firestack.xcscheme create mode 100644 ios/Pods/Pods.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/ios/Firestack.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/Firestack.xcscheme b/ios/Firestack.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/Firestack.xcscheme new file mode 100644 index 0000000..2ff8406 --- /dev/null +++ b/ios/Firestack.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/Firestack.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Firestack.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/Firestack.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..9294764 --- /dev/null +++ b/ios/Firestack.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Firestack.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 58B511DA1A9E6C8500147676 + + primary + + + + + diff --git a/ios/Firestack.xcworkspace/xcuserdata/Cheol.xcuserdatad/UserInterfaceState.xcuserstate b/ios/Firestack.xcworkspace/xcuserdata/Cheol.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..127972b6cab90dda86de4ed7a620526c4d2e5069 GIT binary patch literal 10275 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Pods/Pods.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/Pods/Pods.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..a386de4 --- /dev/null +++ b/ios/Pods/Pods.xcodeproj/xcuserdata/Cheol.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Pods-Firestack.xcscheme + + orderHint + 1 + + + SuppressBuildableAutocreation + + 7EC314ECB2B8568E8C3AAE095E7F7E98 + + primary + + + + +