Android上的Facebook Unity SDK - 安装FB App时登录失败

Bri*_*zee 9 android facebook facebook-unity-sdk

我似乎遇到了与此问题中讨论的问题相同的问题: Android上用于Unity的Facebook SDK - 来自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上的设置.Brian在这里用图片解释:http: //answers.unity3d.com/questions/543540/facebook-sdk-v424-android-login-not-working.html令人困惑的是它会在没有fb app的设备上工作(!),如果你完全忘记了设置.至于实际问题,幸运的是,即使你在Mac上使用Unity 也有一个解决方案很简单:http://answers.unity3d.com/questions/609810/using-facebook-api-with-android-says-登录-IS-canc.html

Bri*_*zee 5

Ach觉得很傻,最终设法解决了这个问题,通过部署到中间件Google Android Project,我能够使用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) {
}
Run Code Online (Sandbox Code Playgroud)

当然,用您自己的包名替换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