Facebook UNITY SDK 登录问题
Posted
技术标签:
【中文标题】Facebook UNITY SDK 登录问题【英文标题】:Facebook UNITY SDK login issue 【发布时间】:2013-11-15 10:17:32 【问题描述】:我刚刚安装了新版本的 Unity 4.3 和新的 facebook sdk,但无法正常工作。
我在 facebook 上创建了应用程序,根据需要将应用程序 ID 复制到统一 facebook 设置,并将包名称和类名称复制回 facebook。
因为 android Key Hash 是空的(即使它不应该是),我使用其他人发布的方法使用 openssl 创建一个。我创建了它并根据需要复制到 facebook。
在此之后,我创建了一个能够登录的小脚本。
// Use this for initialization
void Start ()
enabled = false;
FB.Init(SetInit, OnHideUnity);
// Update is called once per frame
void Update ()
private void SetInit()
FbDebug.Log("SetInit");
enabled = true; // "enabled" is a property inherited from MonoBehaviour
if (FB.IsLoggedIn)
FbDebug.Log("Already logged in");
OnLoggedIn();
private void OnHideUnity(bool isGameShown)
FbDebug.Log("OnHideUnity");
if (!isGameShown)
// pause the game - we will need to hide
Time.timeScale = 0;
else
// start the game back up - we're getting focus again
Time.timeScale = 1;
void OnGUI()
if (!FB.IsLoggedIn)
if (GUI.Button(new Rect(179 , 11, 287, 160), "Login to Facebook"))
FB.Login("email", LoginCallback);
void LoginCallback(FBResult result)
FbDebug.Log("LoginCallback");
Debug.Log("LoginCallback");
if (FB.IsLoggedIn)
OnLoggedIn();
void OnLoggedIn()
FbDebug.Log("Logged in. ID: " + FB.UserId);
现在,当我单击登录按钮时,会出现一个 Facebook 窗口,请求权限,按确定后,它会返回,但我仍然没有登录... 谁能帮忙,这是为什么? 我观察到的另一件奇怪的事情是,只要我单击登录按钮,就会调用 LoginCallback,尽管我认为只有在我给予许可时才会调用它。无论如何,当我给予许可时,它会返回我的应用程序,但什么也没有发生。我可以再次单击登录按钮并发生同样的事情,调用登录回调,它要求权限,我给予权限并返回,没有发生任何事情。有人可以帮忙吗?
【问题讨论】:
请注意来自 Brian 的三张图片:answers.unity3d.com/questions/543540/… 对于 5/2014,问题仍然是 100% 的问题,特别是如果您使用 Mac 进行统一开发。这是整体解决方案,“Rafael 解决方案”:answers.unity3d.com/questions/609810/… 在 AndroidFacebook.cs 中修改 public void OnLoginComplete(string message) 并显示您自己的 keyhash。太棒了! 【参考方案1】:4.3.6 版的 sdk 应该可以解决这个问题。可在此处获得:https://developers.facebook.com/ 我们仍在等待它在资产商店获得批准,因此目前唯一可以从 Facebook 网站获得它。
注意 - 如果您使用 Mac,它仍然损坏 (5/2014)。只需按照“Rafael 解决方案”,从 public void OnLoginComplete(string message) 中正确发现您的哈希。干杯
【讨论】:
我相信 4.3.6 版本不适用于 unity 4.3,它在为 android 构建时会留下 Win32 异常。我安装了 jdk v1.7 和 android rev 22 .. 你能帮我解决这个问题吗? 如果您碰巧使用 PC 进行 Unity 开发,该问题已部分修复。唯一真正的 100% 解决方案在这里:ttp://answers.unity3d.com/questions/609810/using-facebook-api-with-android-says-login-is-canc.html【参考方案2】:因此,在不得不追查我手机的钥匙而沮丧了几天之后,我决定调查一下它在做什么。
经过研究发现,当您发布到 android 设备时,facebook 将使用您发布设置中定义的密钥库,而不是您的 .android/debug.keystore 文件。所以我进去并更改了 sdk 以使其以正确的方式工作。本质上,我更改了 SDK 以查看 ProjectSettings 而不是调试目录来获取密钥哈希。在 FacebookAndroidUtils.cs 我添加了以下内容。
// Using the user defined keystore values instead of the debug one.
degbugKeyHash = GetKeyHash( PlayerSettings.Android.keyaliasName, PlayerSettings.Android.keystoreName, PlayerSettings.Android.keyaliasPass, PlayerSettings.Android.keystorePass );
我创建了一个小型 repo,它提供了修复以及一些 gui 更改,以便更轻松地更新密钥哈希。
Github Facebook Unity SDK 6.1 Fix
更新 - 修复了与在字符串路径上转义空格相关的 OS X 错误
希望这会有所帮助!
【讨论】:
【参考方案3】:把登录功能中的“邮箱”权限去掉试试看。糟糕,我以为我在那里也看到了“publish_actions”权限。
确保清单中的登录活动是纵向的。
【讨论】:
嗨,我发现我只在 Unity 4.3 中遇到问题如果我在 Unity 4.2.2 中重新创建相同的项目,它工作得很好......(唯一奇怪的是它需要两个倍许可) 我们在 unity 4.3 中发现了一些错误。我们现在正在修复它们,并希望尽快准备好新版本。 @benp 是的,它只发生在 unity 4.3 中。 Sdk(v4.2.4) 适用于 unity 4.2 但不适用于 Unity 4.3。我想知道问题出在哪里。此外,Sdk v 4.3.6 甚至没有编译并为 android 构建并在 javac.exe 留下 Win32 异常。你能为我提供关于这个问题的任何帮助吗?我也做了清单部分,但它留下了一个错误并且没有构建。 @user1683989,你用的是什么版本的java? (你的目标是什么?) @benp 感谢您的关注。 JDK 7 64 位。问题已解决。查看链接。 ***.com/questions/21251565/…【参考方案4】:与其自己实现一切,不如尝试使用免费和开源的 SOOMLA 个人资料插件来满足您的所有社交网络需求: https://github.com/soomla/unity3d-profile
也可以在资产商店下载: https://www.assetstore.unity3d.com/en/#!/content/24601
它涵盖了 Facebook、Twitter 和 Google+,并具有用于登录、发布雕像、上传图像和获取好友列表的统一 API。为了正确披露,我是创始人之一。
【讨论】:
以上是关于Facebook UNITY SDK 登录问题的主要内容,如果未能解决你的问题,请参考以下文章
Android上的Unity Facebook SDK登录错误
使用适用于 Android 的 Facebook Unity SDK 登录 facebook 时应用程序强制关闭
Facebook Unity SDK iOS 登录不使用系统级登录,而是使用浏览器或 Facebook 应用程序
无法登录 / Facebook Unity SDK & Android