我似乎遇到了与此问题中讨论的问题相同的问题: Facebook SDK for Unity on Android - 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上的设置。 Brian在这里用图片解释: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-login-is-canc.html
答案 0 :(得分:5)
Ach觉得很傻,最终设法解决了这个问题,通过部署到中间件Google Android Project,我能够使用logcat获得更有用的错误消息:
remote_app_id与存储的ID
不匹配
从那里我发现了与标准Android SDK相关的这个主题: Android Facebook SDK 3.0 gives "remote_app_id does not match stored id" while logging in
最后通过将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
答案 1 :(得分:0)