Skip to content

firebase phone auth Error: Invalid token. at nativeToJSError #1099

@adirzoari

Description

@adirzoari

I'm using firebase phone auth in react native app. in android it works good but in ios (in some devices such as ios 4 and ios 5 ) I get the error

firebase phone auth Error: Invalid token. at nativeToJSError
whatsapp image 2018-05-17 at 14 14 21

  confirmPhone = async (phoneNumber) => {
        const phoneWithAreaCode = phoneNumber.replace(/^0+/, '+972');
        return new Promise((res, rej) => {
            firebase.auth().verifyPhoneNumber(phoneWithAreaCode)
                .on('state_changed', async (phoneAuthSnapshot) => {
                    switch (phoneAuthSnapshot.state) {
                        case firebase.auth.PhoneAuthState.AUTO_VERIFIED:
                            UserStore.setVerificationId(phoneAuthSnapshot.verificationId)
                            await this.confirmCode(phoneAuthSnapshot.verificationId, phoneAuthSnapshot.code, phoneAuthSnapshot)
                            res(phoneAuthSnapshot)

                            break

                        case firebase.auth.PhoneAuthState.CODE_SENT:
                            UserStore.setVerificationId(phoneAuthSnapshot.verificationId)
                            res(phoneAuthSnapshot)
                            break

                        case firebase.auth.PhoneAuthState.AUTO_VERIFY_TIMEOUT:
                            UserStore.setVerificationId(phoneAuthSnapshot.verificationId)
                            UserStore.setErrorCodeAuthentication('SMS code has expired')
                            res(phoneAuthSnapshot)


                        case firebase.auth.PhoneAuthState.ERROR:
                            console.log(phoneAuthSnapshot.error.code)
                            if (phoneAuthSnapshot.error) {
                                this.showMessageErrorByCode(phoneAuthSnapshot.error.code)

                            }

                            rej(phoneAuthSnapshot)
                            break

                    }
                })
        })
    }

    confirmCode = async (verificationId, code, phoneAuthSnapshot) => {
        console.log(verificationId,code);
        try {
            const credential = await firebase.auth.PhoneAuthProvider.credential(verificationId, code)
            UserStore.setCodeInput(code)
            UserStore.setUserCredentials(credential)
            AppStore.setAlreadyVerifiedAuto(true)
            await this.authenticate(credential)
            return credential
        } catch (e) {
            console.log(e)
            this.showMessageErrorByCode(e.error.code)


            //    throw new Error(e)
        }
    }

    showMessageErrorByCode(errorcode) {
        switch (errorcode) {
            case 'auth/invalid-phone-number':
                UserStore.setErrorCodeAuthentication('Please enter valid phone number');
                break;
            case 'auth/unknown': {
                UserStore.setErrorCodeAuthentication('User blocked by firebase');
                break;
            }

            case 'auth/session-expired': {
                UserStore.setErrorCodeAuthentication('SMS code has expired');
                break;
            }
            case 'auth/invalid-verification-code': {
                UserStore.setErrorCodeAuthentication('Code verification not correct');
                break;
            }
            default:
                UserStore.setErrorCodeAuthentication('other error');

        }
    }

    authenticate = async (credential) => {
        await firebase.auth().signInAndRetrieveDataWithCredential(credential)

    }`

```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions