Android - Facebook登录仅在第一次导致恢复错误



我可以成功连接到Facebook并获得朋友列表。所有连接都正常。但是当我删除Facebook的数据(通过设置->应用程序)和我的应用程序时,会出现登录问题。[SDK 3.5]

  1. 启动我的应用
  2. 建立脸书连接
  3. Facebook要求提供用户名和密码,输入它们
  4. 稍等片刻
  5. 它显示"权限"屏幕,询问基本用户信息并发生错误:"您的应用程序意外停止工作。请重试(强制关闭)"

当我单击强制关闭时,突然一次又一次地发生相同的错误(而权限屏幕仍在后面)。如果我能足够快,我点击强制关闭,然后点击允许权限,一切正常,我可以看到我的朋友。所以这个强制关闭错误意味着什么都没有?在日志中,有 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();
}

我也无法理解日志输出中的空是什么。

更新!我找到了发生错误的行。它位于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的示例应用程序,它也崩溃并显示相同的日志错误输出。
  • 在模拟器上尝试过,它可以工作,但是当我旋转屏幕时显示授权屏幕(取消-允许),发生相同的错误(无法到恢复等等等等...在Facebook的示例应用程序上出现相同的错误很奇怪
我不

认为这是您的应用程序的问题。人们一直在报告此错误,我刚刚在这里回答了一个类似的问题。基本上,Facebook昨天发布了新版本的SDK,修复了其AuthorizationClient中的onResume NPE崩溃。查看升级是否能解决您的问题。

根据更改日志 https://developers.facebook.com/docs/android/change-log-3.x/,
在Facebook版本3.5.1中修复了许多有关身份验证和应用程序事件日志记录的问题,因此也许它已在可以从 https://github.com/facebook/facebook-android-sdk 下载的最新版本中得到解决。我希望它能解决你的问题:)

基本上,当调用活动未实时或已销毁时,会发生此问题。在 android 中,方法 onActivityResult() 在登录后被调用。活动被手机强行破坏(在开发人员选项设置中启用不保留活动选项)。请在开发人员选项设置中交叉检查"不保留活动"是否已启用或禁用。

确保在您的清单中 lgin 活动是纵向的。 如果活动不是纵向的,则存在丢失活动的问题。这是非常蹩脚的...:|

相关内容

  • 没有找到相关文章

最新更新