1

问题

我第一次调用 FB.Login 时,我被重定向到 facebook,但是回到我的应用程序似乎有问题。我收到消息“[App name] 已停止工作。” 我已经发布了堆栈跟踪的屏幕截图。

如果我在那次崩溃之后打开我的游戏,我可以看到我已经登录并且可以做我想做的事情(邀请朋友等)。但是如果我注销然后再次登录,就会出现同样的问题。

附加信息

  • 我确定我已经正确设置了哈希键,否则我将无法调用其他 fb 函数。
  • 我的 manifest.xml 正在使用 FBUnityPlayerActivity 活动,我没有在其他活动中扩展 UnityPlayerActivity。
  • 在屏幕变黑并发生崩溃之前,我似乎要回到我的应用程序一瞬间。
  • 尽管我已经尝试过 4.3.3 和 4.2.4,但我将 Facebook 用于 Unity SDK 4.3.4。我在每个版本上都看到相同的错误。
  • 在facebook的应用页面上,包名是正确的,类是com.facebook.unity.FBUnityPlayerActivity。
  • 在大约 30 次尝试中,有一次我在登录后实际上回到了我的游戏。没有更改任何代码,下次我尝试时,它崩溃了。
  • 我试图删除我所有的场景,只运行 facebook 示例场景。在这种情况下一切正常。(后来我发现这仅在纵向模式下运行时才有效。)
  • 一切都在 iOS 上运行。这个错误只是Android。

怀疑

当然,我用谷歌搜索了堆栈跟踪,似乎这里这里也有类似的问题。从 SDK for Unity 发行说明中,我注意到即使是最新版本的 sdk 也使用 Facebook for Android SDK 3.5.0,这指向与我链接到的问题相同的问题。如果确实如此,我是否可以将 facebook 中的底层 facebook 换成 android sdk 换成 unity sdk 并自己更新到更新版本?

堆栈跟踪

在此处输入图像描述

4

3 回答 3

2

我找到了解决方案。我根本不明白,但它有效。查看堆栈跟踪似乎 android 无法恢复登录活动。我尝试运行示例项目并且一切正常,只要我在纵向模式下运行。当我将手机倾斜到横向模式时,同样的崩溃发生了——即使在示例场景中也是如此。查看清单中的 LoginActivity,它看起来像这样:

<activity android:name="com.facebook.LoginActivity" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation">
</activity>

请注意 screenOrientation 设置为纵向。似乎这与我的游戏方向设置为 sensorLandscape 的事实相结合 - android 找不到 LoginActivity 并因此崩溃。我删除了 android:screenOrientation="portrait" 并且一切正常。

于 2013-10-31T10:41:23.523 回答
1

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

于 2013-10-30T05:30:30.600 回答
0

主要问题是产生统一的密钥散列。显示统一性的关键是不同的,您必须放入 facebook 设置。

这是解决方案!

  1. 解压 .apk 文件并解压 META-INF\CERT.RSA 文件
  2. 运行 keytool -printcert -file CERT.RSA
  3. 注意 SHA1 字节打印为 29:37:F1:CB:06...</li>
  4. 将 SHA1 字节复制到 HEX 到 BASE64 转换器
  5. 在输出字段中查看您的 BASE64 密钥哈希

该密钥 BASE64 是您必须在https://apps.facebook.com/nameapp上的 Facebook 设置中输入的真正密钥

于 2014-04-01T08:49:45.190 回答