草庐IT

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

coder 2023-12-05 原文

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

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

当我单击强制关闭时,同样的错误突然一次又一次地发生(而权限屏幕仍在后面)。如果我够快,我单击强制关闭,然后单击允许权限,一切正常,我可以看到我的 friend 。所以这个 FORCE CLOSE 错误意味着什么都没有?在日志中,有 3-4 条相同的 Fatal Exception 消息,因为每次我单击 FORCE CLOSE 时,错误都会再次发生。 当我在我的手机(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

第一次连接后,我可以毫无错误地找到我的 friend 。它只发生在我第一次连接 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 的示例应用程序,它也 崩溃并输出相同的日志错误。
  • 在模拟器上试过,它可以工作,但是当我旋转屏幕时 授权屏幕出现(取消-允许),发生同样的错误(无法 到 onResume blah blah ...) 在 Facebook 的示例应用程序上出现相同的错误很奇怪

最佳答案

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

关于Android - Facebook 登录仅在第一次导致 onResume 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18617807/

有关Android - Facebook 登录仅在第一次导致 onResume 错误的更多相关文章

  1. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  2. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  3. ruby-on-rails - 如何在 Rails Controller Action 上触发 Facebook 像素 - 2

    我有一个ruby​​onrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素

  4. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  5. ruby-on-rails - Rake 任务仅调用一次时执行两次 - 2

    我写了一个非常简单的rake任务来尝试找到这个问题的根源。namespace:foodotaskbar::environmentdoputs'RUNNING'endend当在控制台中执行rakefoo:bar时,输出为:RUNNINGRUNNING当我执行任何rake任务时会发生这种情况。有没有人遇到过这样的事情?编辑上面的rake任务就是写在那个.rake文件中的所有内容。这是当前正在使用的Rakefile。requireFile.expand_path('../config/application',__FILE__)OurApp::Application.load_tasks这里

  6. Ruby 守护进程导致 ActiveRecord 记录器 IOError - 2

    我目前正在用Ruby编写一个项目,它使用ActiveRecordgem进行数据库交互,我正在尝试使用ActiveRecord::Base.logger记录所有数据库事件具有以下代码的属性ActiveRecord::Base.logger=Logger.new(File.open('logs/database.log','a'))这适用于迁移等(出于某种原因似乎需要启用日志记录,因为它在禁用时会出现NilClass错误)但是当我尝试运行包含调用ActiveRecord对象的线程守护程序的项目时脚本失败并出现以下错误/System/Library/Frameworks/Ruby.frame

  7. ruby - 我怎样才能只写一次 "Text"并同时检查 path_info 是否包含 'A' ? - 2

    -if!request.path_info.include?'A'%{:id=>'A'}"Text"-else"Text"“文本”写了两次。我怎样才能只写一次并同时检查path_info是否包含“A”? 最佳答案 有两种方法可以做到这一点。使用部分,或使用content_forblock:如果“文本”较长,或者是一个重要的子树,您可以将其提取到一个部分。这会使您的代码变干一点。在给出的示例中,这似乎有点矫枉过正。在这种情况下更好的方法是使用content_forblock,如下所示:-if!request.path_info.inc

  8. ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误 - 2

    我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token

  9. ruby - 我需要从 facebook 游戏中抓取数据——使用 ruby - 2

    修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它​​是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为

  10. ruby - 从另一个私有(private)方法中使用 self.xxx() 调用私有(private)方法 xxx,导致错误 "private method ` xxx' called” - 2

    我正在尝试获得良好的Ruby编码风格。为防止意外调用具有相同名称的局部变量,我总是在适当的地方使用self.。但是现在我偶然发现了这个:classMyClass上面的代码导致错误privatemethodsanitize_namecalled但是当删除self.并仅使用sanitize_name时,它会起作用。这是为什么? 最佳答案 发生这种情况是因为无法使用显式接收器调用私有(private)方法,并且说self.sanitize_name是显式指定应该接收sanitize_name的对象(self),而不是依赖于隐式接收器(也是

随机推荐