android - 第二次登录时facebook unity sdk 6.0崩溃应用程序

标签 android facebook unity3d facebook-unity-sdk

使用 facebook unity sdk 6.0 创建了一个简单的应用程序。

在启动函数中调用 init facebook。

有一个按钮调用登录,登录回调只是输出字符串。

在装有 android 4.4.2 的 Samsung galaxy s5 上运行。

问题(100% 可重复):

 1. First time click login button, get the facebook login screen.
 2. Click exit button, back to app.
 3. Click login button again, app crashed.

故障转储:

W/dalvikvm(16020): threadid=1: thread exiting with uncaught exception (group=0x417f3da0)
V/SmartFaceService - 3rd party pause(  704): onReceive [android.intent.action.ACTIVITY_STATE/com.xxxxx.testfacebook/create]
I/SpenGestureManager(  704): setFocusWindow21055
D/PointerIcon(  704): setMouseIconStyle1 pointerType: 1001iconType:101 flag:0
D/PointerIcon(  704): setMouseCustomIcon IconType is same.101
D/PointerIcon(  704): setHoveringSpenIconStyle1 pointerType: 10001iconType:1 flag:0
D/PointerIcon(  704): setHoveringSpenCustomIcon IconType is same.1
E/AndroidRuntime(16020): FATAL EXCEPTION: main
E/AndroidRuntime(16020): Process: com.xxxxx.testfacebook, PID: 16020
E/AndroidRuntime(16020): java.lang.Error: FATAL EXCEPTION [main]
E/AndroidRuntime(16020): Unity version     : 4.5.3f3
E/AndroidRuntime(16020): Device model      : samsung SAMSUNG-SM-G900A
E/AndroidRuntime(16020): Device fingerprint: samsung/klteuc/klteatt:4.4.2/KOT49H/G900AUCU1ANCE:user/release-keys
E/AndroidRuntime(16020): 
E/AndroidRuntime(16020): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxxx.testfacebook/com.facebook.unity.FBUnityLoginActivity}: java.lang.UnsupportedOperationException: Session: an attempt was made to open an already opened session.
E/AndroidRuntime(16020):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2328)
E/AndroidRuntime(16020):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386)
E/AndroidRuntime(16020):    at android.app.ActivityThread.access$900(ActivityThread.java:169)
E/AndroidRuntime(16020):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
E/AndroidRuntime(16020):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(16020):    at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(16020):    at android.app.ActivityThread.main(ActivityThread.java:5476)
E/AndroidRuntime(16020):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(16020):    at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(16020):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
E/AndroidRuntime(16020):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
E/AndroidRuntime(16020):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(16020): Caused by: java.lang.UnsupportedOperationException: Session: an attempt was made to open an already opened session.
E/AndroidRuntime(16020):    at com.facebook.Session.open(Session.java:1223)
E/AndroidRuntime(16020):    at com.facebook.Session.openForPublish(Session.java:519)
E/AndroidRuntime(16020):    at com.facebook.unity.FBLogin.sessionOpenRequest(FBLogin.java:113)
E/AndroidRuntime(16020):    at com.facebook.unity.FBLogin.login(FBLogin.java:98)
E/AndroidRuntime(16020):    at com.facebook.unity.FBUnityLoginActivity.onCreate(FBUnityLoginActivity.java:14)
E/AndroidRuntime(16020):    at android.app.Activity.performCreate(Activity.java:5451)
E/AndroidRuntime(16020):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
E/AndroidRuntime(16020):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
E/AndroidRuntime(16020):    ... 11 more
W/ActivityManager(  704):   Force finishing activity com.xxxxx.testfacebook/com.facebook.unity.FBUnityLoginActivity
I/SQLiteSecureOpenHelper(27856): getWritableDatabase(pwd)
I/SQLiteSecureOpenHelper(27856): getDatabaseLocked(b,b,pwd)...
W/ActivityManager(  704):   Force finishing activity com.xxxxx.testfacebook/com.unity3d.player.UnityPlayerNativeActivity
V/SmartFaceService - 3rd party pause(  704): onReceive [android.intent.action.ACTIVITY_STATE/com.xxxxx.testfacebook/pause]
I/dumpstate(16164): begin
I/SpenGestureManager(  704): setFocusWindow0
D/EnterpriseDeviceManager(  704): ContainerId: 0
D/PointerIcon(  704): setMouseIconStyle1 pointerType: 1001iconType:101 flag:0
D/PointerIcon(  704): setMouseCustomIcon IconType is same.101
D/PointerIcon(  704): setHoveringSpenIconStyle1 pointerType: 10001iconType:1 flag:0
D/CrashAnrDetector(  704): processName: com.xxxxx.testfacebook
D/PointerIcon(  704): setHoveringSpenCustomIcon IconType is same.1
D/CrashAnrDetector(  704): broadcastEvent : com.xxxxx.testfacebook data_app_crash

最佳答案

在我的另一个帐户“Helath”上提供了一个更永久的解决方案:

http://answers.unity3d.com/questions/743523/facebook-sdk-cancelled-login-crash.html

公平点,这是我在其他网站上发表的帖子:

如果状态是“登录失败”和“已关闭”,他们基本上忘记了刷新 session 。

如果你愿意,你可以将facebook sdk 导入eclipse 并更改FBLogin.Java 的第63 行

if (SessionState.CLOSED.equals(session.getState())) {
            session = new Builder(FB.getUnityActivity()).setApplicationId(session.getApplicationId()).build();
            Session.setActiveSession(session);
        }

   if (SessionState.CLOSED.equals(session.getState()) || SessionState.CLOSED_LOGIN_FAILED.equals(session.getState())) {
                session = new Builder(FB.getUnityActivity()).setApplicationId(session.getApplicationId()).build();
                Session.setActiveSession(session);
            }

然后将项目导出为 jar,只包含类文件,作为 plugins/Android/facebook/bin 文件夹中的 classes.jar。

编辑:如果我上传我正在使用的 classes.jar 可能会更容易...在这里下载:http://speedy.sh/QPgUp/classes.jar并将其放入 Plugins/Android/facebook/bin 文件夹中。

编辑 2:如果您仍然遇到此问题,Facebook 似乎已于 2014 年 10 月 20 日发布了他们的修复程序。因此更新到他们最新的 sdk 现在可以解决这个问题!

关于android - 第二次登录时facebook unity sdk 6.0崩溃应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25751057/

相关文章:

c# - zxing 集成到 monodroid 应用程序中

javascript - 如何从 YouTube 视频网址获取直接视频网址?

android - 运行时异常 : The Facebook sdk must be initialized before calling activateApp

ios - 从应用程序打开 Facebook 页面

c# - 带种子的随机数

unity3d - Unity - 启动构建的游戏 .exe 时,窗口每次都会缩小?

android - 使用 createPendingResult 从服务回调

android - RXAndroid 编写嵌套订阅的更好方法

facebook - 使用 FQL 获取用户的所有点赞(全部)

android - 为什么我的声音脚本会干扰我的广告