6

Facebookに正常に接続して、フレンドリストを取得できます。すべての接続は正常です。しかし、Facebook (設定 -> アプリケーション) とアプリのデータを削除すると、ログインの問題が発生します。[SDK3.5]

  1. アプリを起動
  2. フェイスブックでつながりましょう
  3. Facebook がユーザー名とパスワードを要求するので、それらを入力します
  4. ちょっと待って
  5. 基本的なユーザー情報を要求するアクセス許可画面が表示され、エラーが発生します:「アプリケーションが予期せず動作を停止しました。再試行してください (FORCE CLOSE)」

強制終了をクリックすると、突然同じエラーが何度も発生します(許可画面がまだ遅れている間)。急いで [Force Close] をクリックしてから [Allow Permission] をクリックすると、すべてが正常に行われ、友達が表示されます。では、この FORCE CLOSE エラーは何も意味しないのでしょうか? FORCE CLOSE をクリックするたびにエラーが再度発生するため、ログには同じ Fatal Exception メッセージが 3 ~ 4 あります。このエラーは、携帯電話 (SE Xperia Arc S、2.3.3) でアプリケーションを実行しようとすると発生します。しかし、エミュレーターで試してみると、エラーは発生しません。問題なく動作します。(エミュレータは 2.3.3 と 4.2)

    09-04 18:09:47.916 E/AndroidRuntime(29511): FATAL EXCEPTION: main
09-04 18:09:47.916 E/AndroidRuntime(29511): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:47.916 E/AndroidRuntime(29511): Caused by: java.lang.NullPointerException
09-04 18:09:47.916 E/AndroidRuntime(29511):     ... 12 more
09-04 18:09:51.526 E/AndroidRuntime(29538): FATAL EXCEPTION: main
09-04 18:09:51.526 E/AndroidRuntime(29538): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:51.526 E/AndroidRuntime(29538): Caused by: java.lang.NullPointerException
09-04 18:09:51.526 E/AndroidRuntime(29538):     ... 12 more
09-04 18:09:53.786 E/AndroidRuntime(29547): FATAL EXCEPTION: main
09-04 18:09:53.786 E/AndroidRuntime(29547): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:53.786 E/AndroidRuntime(29547): Caused by: java.lang.NullPointerException
09-04 18:09:53.786 E/AndroidRuntime(29547):     ... 12 more
09-04 18:09:55.516 E/AndroidRuntime(29557): FATAL EXCEPTION: main
09-04 18:09:55.516 E/AndroidRuntime(29557): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:55.516 E/AndroidRuntime(29557): Caused by: java.lang.NullPointerException
09-04 18:09:55.516 E/AndroidRuntime(29557):     ... 12 more
09-04 18:09:57.776 E/AndroidRuntime(29564): FATAL EXCEPTION: main
09-04 18:09:57.776 E/AndroidRuntime(29564): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:57.776 E/AndroidRuntime(29564): Caused by: java.lang.NullPointerException
09-04 18:09:57.776 E/AndroidRuntime(29564):     ... 12 more
09-04 18:09:59.186 E/dalvikvm(29571): Could not find class 'dalvik.system.BaseDexClassLoader', referenced from method com.facebook.common.dextricks.SystemClassLoaderAdder.a
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladDumpProfiles
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladResetProfiles
09-04 18:09:59.586 E/dalvik-internals(29571): Failed to look up ladPrintHeaderInfo
09-04 18:09:59.936 E/AndroidRuntime(29578): FATAL EXCEPTION: main
09-04 18:09:59.936 E/AndroidRuntime(29578): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:09:59.936 E/AndroidRuntime(29578): Caused by: java.lang.NullPointerException
09-04 18:09:59.936 E/AndroidRuntime(29578):     ... 12 more
09-04 18:10:02.006 E/AndroidRuntime(29585): FATAL EXCEPTION: main
09-04 18:10:02.006 E/AndroidRuntime(29585): java.lang.RuntimeException: Unable to resume activity {com.ilanharitasi/com.facebook.LoginActivity}: java.lang.NullPointerException
09-04 18:10:02.006 E/AndroidRuntime(29585): Caused by: java.lang.NullPointerException
09-04 18:10:02.006 E/AndroidRuntime(29585):     ... 12 more
09-04 18:10:04.566 E/ONRESUME(29605): Onresume worked
09-04 18:10:04.636 E/STATEM  (29605): OPENING
09-04 18:10:05.186 E/ONRESUME(29605): Onresume worked

最初の接続後、エラーなしで友達を見つけることができます。初めてFacebookに接続した直後にのみ発生し、ユーザー名とパスワードを要求されます(そしてログインをクリックします)

@Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    uiHelper = new UiLifecycleHelper(this, callback);
    uiHelper.onCreate(savedInstanceState);

    setContentView(R.layout.activity_fb_findfriends);
    LinearLayout v = (LinearLayout) findViewById(R.id.fb_app_users);
    openSession(v);

  }

public void openSession(View v){
        // start Facebook Login
        Session.openActiveSession(this, true, callback);

    }

@Override
  protected void onResume() {
      super.onResume();
      uiHelper.onResume();
      Log.e("ONRESUME", "Onresume çalıştı");
  }

private void requestMyAppFacebookFriends(Session session) {
        Request friendsRequest = createRequest(session);
        friendsRequest.setCallback(new Request.Callback() {

            @Override
            public void onCompleted(Response response) {

                List<GraphUser> friends = getResults(response);
                //Display Friends
            }
        });
    friendsRequest.executeAsync();
}

また、ログ出力から何がnullなのか理解できませんでした。

アップデート!エラーが発生している行を見つけました。com.facebook.AuthorizationClient.java 行 135 内にあります。

void startOrContinueAuth(AuthorizationRequest request) {
        if (appEventsLogger == null || appEventsLogger.getApplicationId() != request.getApplicationId()) {
            Log.e("HATA!", "BOOM");
            appEventsLogger = AppEventsLogger.newLogger(context, request.getApplicationId());
        }

そして、この startOrContinueAuth メソッドは com.Facebook.LoginActivity で起動されます

@Override
public void onResume() {
    super.onResume();

    // If the calling package is null, this generally means that the callee was started
    // with a launchMode of singleInstance. Unfortunately, Android does not allow a result
    // to be set when the callee is a singleInstance, so we log an error and return.
    if (callingPackage == null) {
        Log.e(TAG, "Aheyy"+NULL_CALLING_PKG_ERROR_MSG);
        finish();
        return;
    }

    authorizationClient.startOrContinueAuth(request);
}
        if (getInProgress()) {
            continueAuth();
        } else {
            authorize(request);
        }
    }

アップデート2!

  • 私はとても混乱しました。アプリケーションを非常に基本的な openActiveSession() メソッドに単純化しました。クラッシュ
  • Facebook、FriendPicker のサンプル アプリケーションを試してみましたが、同じログ エラー出力でクラッシュしました。
  • エミュレータで試してみたところ動作するのですが、認証画面が表示されたときに画面を回転させると(cancel-allow)、同じエラーが発生します(onResumeできないとか何とか...) Facebookのサンプルアプリケーションで同じエラーが発生するのはおかしい
4

4 に答える 4

1

これはあなたのアプリの問題ではないと思います。人々はこのバグを報告しており、私はここで同様の質問に答えました. 基本的に、Facebook は昨日、AuthorizationClient での onResume NPE クラッシュを修正する新しいバージョンの SDK をリリースしました。アップグレードすると問題が解決するかどうかを確認してください。

于 2013-09-27T03:13:33.877 に答える
0

マニフェストで、lgin アクティビティが縦向きになっていることを確認してください。縦向きでない場合、アクティビティが失われるという問題があります..これは非常に不自由です...:|

于 2013-11-10T14:54:19.027 に答える
0

変更ログhttps://developers.facebook.com/docs/android/change-log-3.x/によると、
Facebook バージョン 3.5.1 では、認証とアプリ イベントのログ記録に関する多くの問題が修正されたので、おそらくhttps://github.com/facebook/facebook-android-sdkからダウンロードできる最新バージョンで解決されています。私はそれがあなたの問題を解決できることを願っています:)

于 2013-10-18T14:40:32.300 に答える