#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, и она работает нормально. Но не уверен, как получить исправление, не комментируя его.