2

我在使用 SSO 登录 Facebook 时遇到了崩溃。我在任何类似的论坛中都找不到任何报告。

当我们在 facebook 网站上更改用户密码时,大约 15 秒内,android facebook 客户端将通过通知栏通知用户 facebook 身份验证失败。如果用户做出反应并登录,我们的应用程序 SSO 将毫无问题地获取新令牌。

如果用户更改密码,在用户对 Facebook 应用程序通知做出反应并使用新密码登录之前启动我们的应用程序 facebook 请求(如下载好友列表),我们会遇到 SSO 崩溃,这会错误地通知我们的应用程序用户取消登录。

不知何故,facebook 应用程序登录对话框(蓝色对话框)和 SSO 登录对话框(白色对话框)不能同时存在。如果它们同时打开,SSO 发起的 Facebook 客户端实例会崩溃,并出现以下异常:

04-25 10:40:39.790: E/AndroidRuntime(5991): FATAL EXCEPTION: main
04-25 10:40:39.790: E/AndroidRuntime(5991): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.facebook.katana/com.facebook.katana.ProxyAuth}: java.lang.NullPointerException
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.os.Handler.dispatchMessage(Handler.java:99)
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.os.Looper.loop(Looper.java:130)
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.app.ActivityThread.main(ActivityThread.java:3691)
04-25 10:40:39.790: E/AndroidRuntime(5991): at java.lang.reflect.Method.invokeNative(Native Method)
04-25 10:40:39.790: E/AndroidRuntime(5991): at java.lang.reflect.Method.invoke(Method.java:507)
04-25 10:40:39.790: E/AndroidRuntime(5991): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
04-25 10:40:39.790: E/AndroidRuntime(5991): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
04-25 10:40:39.790: E/AndroidRuntime(5991): at dalvik.system.NativeStart.main(Native Method)
04-25 10:40:39.790: E/AndroidRuntime(5991): Caused by: java.lang.NullPointerException
04-25 10:40:39.790: E/AndroidRuntime(5991): at com.facebook.orca.common.util.Base64.c(Base64.java:497)
04-25 10:40:39.790: E/AndroidRuntime(5991): at com.facebook.orca.common.util.Base64.b(Base64.java:459)
04-25 10:40:39.790: E/AndroidRuntime(5991): at com.facebook.katana.ProxyAuth.b(ProxyAuth.java:36)
04-25 10:40:39.790: E/AndroidRuntime(5991): at com.facebook.katana.activity.PlatformDialogActivity.a(PlatformDialogActivity.java:127)
04-25 10:40:39.790: E/AndroidRuntime(5991): at com.facebook.orca.activity.FbFragmentActivity.onCreate(FbFragmentActivity.java:48)
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-25 10:40:39.790: E/AndroidRuntime(5991): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
04-25 10:40:39.790: E/AndroidRuntime(5991): ... 11 more

另一个提示是上面一点,在 facebook 应用程序中有一个窗口泄漏非致命异常: Activity com.facebook.katana.ProxyAuth has leaked windowcom.android.internal.policy.impl.PhoneWindow$DecorView@406eecf0 that was originally added here 有人遇到过类似的崩溃吗?我真的很困惑,没有人提到那些崩溃,据谷歌可以找到。我在实施此操作时遵循了 hackbook 示例。我真的不知道是什么原因造成的。

4

1 回答 1

5

可能与密码更改无关,但删除:

AndroidManifest.xml 中的 android:launchMode="singleInstance"

为我解决了一个类似的错误(也是 com.facebook.katana/com.facebook.katana.ProxyAuth 中的 java.lang.NullPointerException)

于 2012-05-14T22:01:01.763 回答