react-native-firebase-phone-auth-corrected
v1.0.2
Published
Update 05 April '18 :
Downloads
85
Readme
Update 5 April '18 :
react-native-firebase-phone-auth-corrected
This npm includes a correction over react-native-firebase-phone-auth npm from given link https://www.npmjs.com/package/react-native-firebase-phone-auth :-
Problem in Android : -
- In “react-native-firebase-phone-auth” library firebase object has not created in “RNFirebasePhoneAuthModule.java”. They are already implemented the firebase object logic but code is commented out.
- method does not override or implement a method from a supertype @override.
Resolution for Android : -
- Uncomment FirebaseOptions Builder object from “RNFirebasePhoneAuthModule.java” and Comment FirebaseApp.initializeApp() method without firebase object parameter.
- Removed override method “createJSModules()” From "RNFirebasePhoneAuthPackage.java”. Resolution suggested by the owner of “react-native-firebase-phone-auth” library from given url https://github.com/ashinga48/React-Native-Firebase-Phone-Authentication/issues/3 .
Getting started
$ npm install react-native-firebase-phone-auth-corrected --save
Mostly automatic installation
$ react-native link react-native-firebase-phone-auth-corrected
Manual installation
iOS
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-firebase-phone-auth-corrected
and addRNFirebasePhoneAuth.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNFirebasePhoneAuth.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)<
Android
- Open up android/app/src/main/java/[...]/MainApplication.java
...
• Add import com.reactlibrary.RNFirebasePhoneAuthPackage; // <--- imports at the top of the file
• Add new RNFirebasePhoneAuthPackage() <--- to the list returned by the getPackages() method
- Append the following lines to android/settings.gradle :
...
include ':react-native-firebase-phone-auth-corrected'
project(':react-native-firebase-phone-auth-corrected').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase-phone-auth-corrected/android')
- Insert the following lines inside the dependencies block in android/app/build.gradle :
...
compile project(':react-native-firebase-phone-auth-corrected')
Usage
Import DeviceEventEmitter in react-native
Import RNFirebasePhoneAuth from 'react-native-firebase-phone-auth-corrected'
import { //... DeviceEventEmitter, } from 'react-native'; import RNFirebasePhoneAuth from 'react-native-firebase-phone-auth-corrected';
(Optional) initialize Firebase
/* All info appId, projectId, appKey, databaseURL can be found in google-services.json file which you can download from firebase console in the website */ RNFirebasePhoneauth.initFirebase( appId, projectId, appKey, databaseURL, (resp)=>{ console.log(resp) }, (error)=>{ //alert(error); console.log(error); }, );
Add event listener for OTPStatus in componentDidMount
componentDidMount() { this.initFirebase(); // if needed this.listenToOTP(); } listenToOTP(){ DeviceEventEmitter.addListener('OTPStatus', (data) => { switch(data.CODE){ case "SENT": //SMS Sent break; case "VERIFIED": //SMS Received & read by google play services let authData = { code : data.OTPNumber, verificationId : data.verificationId } firebase.auth().signInWithPhoneAuth( authData, (success)=>{ //on Successful Login }, (error)=>{ //on Error }); break; case "ERROR": //error sending SMS break; } if(data.CODE == "ERROR") { } }); }
Lastly Send OTP to a phoneNumber
let phoneNumber = "+61412341234"; RNFirebasePhoneauth.sendOTP(phoneNumber);
That's it!!!
// TODO: Android & iOS Firebase link RNFirebasePhoneAuth;
Common Issues on Build / Integration
1 : Failed to resolve: com.google.firebase:firebase-core:X.X.X
follow this link, it worked for me
https://stackoverflow.com/questions/37310188/failed-to-resolve-com-google-firebasefirebase-core9-0-0
2 : Did you setup Firebase for Android & iOS properly??
https://support.google.com/firebase/answer/7000104?hl=en
OR
- ANDROID issue #1 - Add firebase configuration file to the root of the project in android
https://support.google.com/firebase/answer/7015592
- ANDROID issue #2 - build.gradle config did run perfectly with this configuration
```
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.ivu"
minSdkVersion 16
targetSdkVersion 26
2. iOS