9

我似乎遇到了与这个问题中讨论的相同的问题: Android 上的 Facebook SDK for Unity - Trouble about callback from FB.Login

在 Android 上,当安装常规 Facebook 应用程序时,使用 Unity SDK 调用 FB.Login() 会提示用户接受应用程序的权限,当应用程序被批准时,会触发回调:FBResult.Text

{"is_logged_in":false,"user_id":"","access_token":""}

FBResult.Error

null

安装 Facebook 应用程序后,使用 Web 流程并且工作正常,但是我已经使用 Unity SDK 的 v4.2.4 和 v4.2.2 进行了尝试。

有关解决此问题的任何其他建议?

编辑:还应该注意,我已经在 2 种不同的设备(Galaxy Note 10.1 和 Nexus 7)上尝试过这个

提前致谢!


2014 年的注释。在某些情况下,问题很简单,就是您忘记了 developers.facebook 上的设置。布赖恩在这里用图片解释它:http : //answers.unity3d.com/questions/543540/facebook-sdk-v424-android-login-not-working.html 令人困惑的是它会在没有 fb 应用程序的设备上工作(!),如果您完全忘记了设置。至于实际问题,幸运的是,即使您在 Mac 上使用 Unity,也有一个解决方案,而且很简单: http ://answers.unity3d.com/questions/609810/using-facebook-api-with-android-says-登录-is-canc.html

4

2 回答 2

5

感觉很傻,最终自己解决了,通过部署到中间的谷歌 Android 项目,我能够使用 logcat 获得更有用的错误消息:

remote_app_id 与存储的 id 不匹配

从那里我发现了与标准 Android SDK 相关的主题: Android Facebook SDK 3.0 在登录时给出“remote_app_id 与存储的 id 不匹配”

最后通过用这段代码得到的Key Hash替换Key Hash解决了这个问题

try {
PackageInfo info = getPackageManager().getPackageInfo(
      "com.facebook.samples.loginhowto", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures){
       MessageDigest md = MessageDigest.getInstance("SHA");
       md.update(signature.toByteArray());
       Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

当然用你自己的包名替换 com.facebook.samples.loginhowto

来源: https ://stackoverflow.com/a/14421260/2823496

似乎通过命令行或通过 Unity 获得正确的 keyhash 取决于是否安装了正确版本的 openssl(并存储在 PATH 中),但不知道那是什么版本。(尝试了链接答案中的那个)因此,请向其他为此苦苦挣扎的人提出建议。


注意 - 如果您使用 Mac 进行 Unity 开发,几乎不可能做到这一点。在这种情况下,幸运的是简单的解决方案 http://answers.unity3d.com/questions/609810/using-facebook-api-with-android-says-login-is-canc.html

于 2013-09-30T09:46:02.530 回答
0

我有同样的错误。我已经删除了 facebook 应用程序。我的应用程序运行良好


更多信息:https ://stackoverflow.com/a/23446140/294884

于 2013-10-29T02:52:41.223 回答