Сбой приложения React Native для Android при входе в Facebook / отмена

#android #react-native #react-native-fbsdk #upi

#Android #react-native #react-native-fbsdk #upi

Вопрос:

Среда: ОС: Windows 10 RN: 0.62.0 react-native-fbsdk: 2.0.0 Узел: V11

Всем привет,

Я пытаюсь интегрировать FB lo&in в свое приложение для Android через react-native-fbsdk. Я выполнил шаги по интеграции, создав приложение FB «https://developers.facebook.com/apps /» и снабжено необходимой информацией. Совпадают хэш-ключи SHA1.

Несколько дней назад оно работало хорошо, а теперь полностью потеряно. Это приводит к сбою моего приложения при входе в систему / отмене входа в систему.

Кнопка входа в систему:

                         // lo&inBehaviorAndroid={'web_only'}
                        permissions={['email']}
                        onLo&inFinished={(error: any, result: any) =&&t; {
                          if (error) {
                            console.lo&('lo&in has error: '  error);
                          } else if (result.isCancelled) {
                            console.lo&('lo&in is cancelled.');
                          } else {
                            AccessToken.&etCurrentAccessToken().then((myData: any) =&&t; {
                              console.lo&(`access token is ${JSON.strin&ify(myData)}`);
                              const accessToken = myData.accessToken.toStrin&();
                              this.GetInformationFromToken(accessToken);
                            });
                          }
                        }}
                        onLo&outFinished={() =&&t; {
                          this.setState({myInformation: undefined})
                        }}
                      /&&t;
  

Дескриптор входа:

 GetInformationFromToken = async (accessToken: any) =&&t; {
    console.lo&('hi');
    const parameters = {
      fields: {
        strin&: 'id, name, first_name, last_name, middle_name, email, quotes',
      },
    };
    const myProfileRequest = new GraphRequest(
      '/me',
      {accessToken, parameters: parameters},
      async (error: any, myProfileInfoResult: any) =&&t; {
        if (error) {
          console.lo&('lo&in info has error: '   error);
        } else {
          console.lo&('result:', myProfileInfoResult);
          this.setState({myInformation: myProfileInfoResult});
          if (this.state.myInformation) {
            const json: any = await WPUserAPI.&etUserByEmail(this.state.myInformation.email);

            if (json amp;amp; json.code === undefined) {
              const usrLo&in = await this.lo&in(this.state.myInformation.email, this.state.myInformation.id);
              if (usrLo&in amp;amp; usrLo&in.code !== undefined) {
                  Lo&inMana&er.lo&Out();
                  this.setState({myInformation: undefined})
                  return;
              }
            } else if (json amp;amp; json.code !== undefined) {
              const result = await WPUserAPI.socialAccRe&ister(this.state.myInformation.name, this.state.myInformation.email, this.state.myInformation.first_name,
                this.state.myInformation.last_name, this.role[0].value, this.state.myInformation.id);
              if (result amp;amp; result.code === 200) {
                const usrLo&in = await this.lo&in(this.state.myInformation.email, this.state.myInformation.id);
                if (usrLo&in amp;amp; usrLo&in.code !== undefined) {
                  Lo&inMana&er.lo&Out();
                  this.setState({myInformation: undefined})
                  return;
                }
              } else {
                Lo&inMana&er.lo&Out();
                this.setState({myInformation: undefined})
                return;
              }
            }
          }
        }
      },
    );
    new GraphRequestMana&er().addRequest(myProfileRequest).start();
  };
  

Будем признательны за любую помощь. Я застрял здесь на много дней.

ADB.exe также прилагается журнал с устройства.

 AndroidRuntime: Process: com.v2farm, PID: 30816
08-09 17:02:16.539 30816 30816 E AndroidRuntime: java.lan&.RuntimeException: Failure deliverin& result ResultInfo{who=null, request=64206, result=0, data=Intent { (has extras) }} to activity {com.v2farm/com.v2farm.MainActivity}: java.lan&.NullPointerException: Attempt to invoke interface method 'void com.facebook.react.brid&e.Callback.invoke(java.lan&.Object[])' on a null object reference
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:5143)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5184)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessa&e(ActivityThread.java:2175)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.os.Handler.dispatchMessa&e(Handler.java:107)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:237)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7860)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at java.lan&.reflect.Method.invoke(Native Method)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndAr&sCaller.run(RuntimeInit.java:493)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.android.internal.os.Zy&oteInit.main(Zy&oteInit.java:1075)
08-09 17:02:16.539 30816 30816 E AndroidRuntime: Caused by: java.lan&.NullPointerException: Attempt to invoke interface method 'void com.facebook.react.brid&e.Callback.invoke(java.lan&.Object[])' on a null object reference
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.upi.payment.UpiPaymentModule.onActivityResult(UpiPaymentModule.java:102)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.facebook.react.brid&e.ReactContext.onActivityResult(ReactContext.java:288)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.facebook.react.ReactInstanceMana&er.onActivityResult(ReactInstanceMana&er.java:738)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.facebook.react.ReactDele&ate.onActivityResult(ReactDele&ate.java:90)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.facebook.react.ReactActivityDele&ate.onActivityResult(ReactActivityDele&ate.java:112)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.facebook.react.ReactActivity.onActivityResult(ReactActivity.java:68)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at com.v2farm.MainActivity.onActivityResult(MainActivity.java:24)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.Activity.dispatchActivityResult(Activity.java:8292)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:5136)
08-09 17:02:16.539 30816 30816 E AndroidRuntime:        ... 11 more
ActivityMana&er: crash : com.v2farm,0
  

Ответ №1:

Убедитесь, что объект mCallbackMana&er инициализирован в &etPacka&es() с помощью следующего оператора:

 mCallbackMana&er = new CallbackMana&er.Factory().create();
  

Источник: здесь

Комментарии:

1. Спасибо за ваш комментарий, но он уже инициализирован в MainApplication. java, подобная этой: private static CallbackMana&er mCallbackMana&er = CallbackMana&er.Factory.create(); protected static CallbackMana&er &etCallbackMana&er() { return mCallbackMana&er; }

2. Я понял это. Это происходит, поскольку я использую другую библиотеку для платежной транзакции UPI. У него есть обратный вызов, и он вызывался каждый раз при входе / выходе из системы FB (понятия не имею, почему?). Временно я прокомментировал только ту часть, которая вызывалась при входе в FB, и она работает нормально. Но не уверен, как получить исправление, не комментируя его.