Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App crashing on device but ok on simulators #318

Open
ajonno opened this issue Mar 23, 2017 · 7 comments
Open

App crashing on device but ok on simulators #318

ajonno opened this issue Mar 23, 2017 · 7 comments

Comments

@ajonno
Copy link

ajonno commented Mar 23, 2017

Really need someone's help to figure this one out. Our app has started crashing on device, but during dev all is good on sims.

Narrowed it down to the listenForAuth method in XCode where the exception is being thrown - specifically it's the "userTokenError" event.

Firstly how should we be protecting against this crash scenario ? Im assuming we need to call reauthenticateWithCredentialForProvider() ? If yes, not sure where to put that call, in relation to the "listenForAuth" listener which we invoke on app startup (in an action).

Appreciate anyone's help/guidance on this, thanks.

RCT_EXPORT_METHOD(listenForAuth)
{
    self->listening = true;
    self->authListenerHandle =
    [[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth,
                                                    FIRUser *_Nullable user) {

        if (user != nil) {
            // User is signed in.
            [self userPropsFromFIRUserWithToken:user
                                    andCallback:^(NSDictionary *userProps, NSError * error) {
                                        if (error != nil) {
                                            [self
                                             sendJSEvent:AUTH_CHANGED_EVENT
                                             props: @{
                 **crashing here ====>**  @"eventName": @"userTokenError",
                                                      @"authenticated": @((BOOL)false),
                                                      @"errorMessage": [error localizedFailureReason]
                                                      }];
                                        } else {
                                            [self
                                             sendJSEvent:AUTH_CHANGED_EVENT
                                             props: @{
                                                      @"eventName": @"user",
                                                      @"authenticated": @((BOOL)true),
                                                      @"user": userProps
                                                      }];
                                        }
                                    }];

@ajonno
Copy link
Author

ajonno commented Mar 25, 2017

any ideas on how to manage this ? im assuming token needs to be refreshed?? what is the order of precedence re auth - when should i be calling 'reauthenticateWithCredentialForProvider' ?

@ajonno
Copy link
Author

ajonno commented Mar 27, 2017

Ari are you there ?! This is a big issue for us as app is due to go into beta at a number of schools tomorrow. Is a showstopper. Can you please help ?

@jeveloper
Copy link

Hey @auser Just curious if you are still maintaining this lib?
Appreciate your efforts !

@kelvinpompey
Copy link

I've run into this issue as well.

@kelvinpompey
Copy link

I've worked around it by removing the call to [error localizedFailureReason].

    if (user != nil) {
        // User is signed in.
        [self userPropsFromFIRUserWithToken:user
                                andCallback:^(NSDictionary *userProps, NSError * error) {
                                    if (error != nil) {
                                        [self
                                         sendJSEvent:AUTH_CHANGED_EVENT
                                         props: @{
                                                  @"eventName": @"userTokenError",
                                                  @"authenticated": @((BOOL)false),
                                                  @"errorMessage": @"Mysterious Error"
                                                  }];

KrauseFx added a commit to KrauseFx/react-native-firestack that referenced this issue May 17, 2017
Fixes fullstackreact#318

This has been really hard to reproduce and track down: When an API key gets revoked the stored auth token is not valid any more, causing this error. `error localizedFailureReason` doesn't contain anything in that case, so it's `nil`, causing Objective-C to crash as you can't have it as a value for a dictionary. 

It's probably save to have the default text here, but feel free to tweak it and modify the PR directly as necessary.

Let me know if you have any other questions. I'm using `firestack` for my side project [wwdc.family](https://wwdc.family) 👍
@KrauseFx
Copy link

I also ran into this problem, and submitted a PR #340

This has been pretty hard to track down, as I couldn't reproduce the problem.

@Salakar
Copy link
Collaborator

Salakar commented May 27, 2017

@ajonno @jeveloper @kelvinpompey - see my response in PR #340 - I know some of you are already doing so though now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants