Crash Accountkit Facebook Android App

Я получил этот логарифм от пользователя при попытке открыть комплект учетной записи через намерение.

java.lang.NullPointerException 1 в com.facebook.accountkit.internal.AppEventsLogger.handleResponse (AppEventsLogger.java:526) 2 в com.facebook.accountkit.internal.AppEventsLogger.access $ 600 (AppEventsLogger.java .:57) twitter (AccountKitGraphRequestAsyncTask.java:42) 6 в android.os.AsyncTask.finish (AsyncTask.java:631) 7 в android.os.AsyncTask.access 600 долларов (AsyncTask.java:177) 8 в android.os.AsyncTask $ InternalHandler. handleMessage (AsyncTask.java:644) 9 в android.os.Handler.dispatchMessage (Handler.java:99) 10 в android.os.Looper.loop (Looper.java:137) 11 в android.app.ActivityThread.main ( ActivityThread.java:5041) 12 в java.lang.reflect.Method.invokeNative ( Собственный метод) 13 на java.lang.reflect.Method.invoke (Method.java:511) 14 на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:793) 15 на com.android.internal .os.ZygoteInit.main (ZygoteInit.java:560) 16 в dalvik.system.NativeStart.main (собственный метод

d)

Версия React Native Account Kit: 4+

Платформы (iOS, Android или оба?): Android

Нужна обратная связь от вас, пожалуйста!

Спасибо большое!


person Dương Nguyễn Văn    schedule 08.11.2016    source источник


Ответы (2)


Это похоже на эту ошибку

https://developers.facebook.com/bugs/296907867375696/

В нем говорится, что исправление развертывается в следующем выпуске.

person John Anderson    schedule 17.11.2016

Изменить: команда facebook исправила эту ошибку в account-kit-sdk 4.18.0.

Я много раз обнаруживал эту ошибку в account-kit-sdk 4.17.0

после прочтите deomplied класс о AccountKitGraphResponse и AppEventsLogger

protected void onPostExecute(AccountKitGraphResponse result) {
        super.onPostExecute(result);
        if(result != null && result.getError() != null && result.getError().getException().getError().getErrorType() == Type.NETWORK_CONNECTION_ERROR && result.getError().getException().getError().getDetailErrorCode() != 101 && this.numRetries < 4) {
            Handler mainHandler = new Handler(AccountKitController.getApplicationContext().getMainLooper());
            mainHandler.post(new Runnable() {
                public void run() {
                    int newNumRetries = AccountKitGraphRequestAsyncTask.this.numRetries + 1;
                    final AccountKitGraphRequestAsyncTask asyncTask = new AccountKitGraphRequestAsyncTask((HttpURLConnection)null, AccountKitGraphRequestAsyncTask.this.request, AccountKitGraphRequestAsyncTask.this.callback, newNumRetries, null);
                    Utility.getBackgroundExecutor().schedule(new Runnable() {
                        public void run() {
                            if(!AccountKitGraphRequestAsyncTask.this.isCancelled() && !asyncTask.isCancelled()) {
                                asyncTask.executeOnExecutor(Utility.getThreadPoolExecutor(), new Void[0]);
                            }

                        }
                    }, (long)(5 * newNumRetries), TimeUnit.SECONDS);
                    if(AccountKitGraphRequestAsyncTask.this.request.isLoginRequest()) {
                        AccountKitGraphRequestAsyncTask.currentAsyncTask = asyncTask;
                    }

                }
            });
        } else {
            if(this.callback != null) {
                this.callback.onCompleted(result);
            }

            if(this.exception != null) {
                Log.d(TAG, String.format("onPostExecute: exception encountered during request: %s", new Object[]{this.exception.getMessage()}));
            }

        }
    }

private void handleResponse(AppEventsLogger.SessionEventsStateKey stateKey, AccountKitGraphRequest request, AccountKitGraphResponse response, AppEventsLogger.SessionEventsState sessionEventsState, AppEventsLogger.FlushStatistics flushState) {
        AccountKitRequestError error = response.getError();
        String resultDescription = "Success";
        ...
    }

вызываемый this.callback.onCompleted(result); метод, который будет запускать AppEventsLogger.this.handleResponse(stateKey, postRequest, response, sessionEventsState, flushState);, в некоторых случаях response является null объектом, который вызовет исключение NullPointerException

Я предлагаю это изменение

if(this.callback != null && result != null) {
   this.callback.onCompleted(result);
}
person Xingxing    schedule 28.11.2016