我刚刚安装了新版本的Unity 4.3和新的facebook sdk,但我无法使用它。
我在facebook上创建了应用程序,根据需要将app id复制到unity facebook设置,并将Package Name和Class名称复制回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,即使我认为只有在我允许的情况下才应该这样做。无论如何,当我给予许可它返回我的应用程序,没有任何反应。我可以再次单击登录按钮,同样的事情发生,登录回调呼叫,它要求permisions,我给permision并返回,没有任何反应。有人可以帮忙吗?
答案 0 :(得分:2)
版本4.3.6的sdk应该解决这个问题。它可以在这里找到:https://developers.facebook.com/我们仍在等待它在资产商店获得批准,所以现在唯一能够获得它的地方是来自Facebook的网站。
注意 - 如果您使用的是Mac,它仍然会损坏(2014年5月)。只需按照“Rafael解决方案”,从public void OnLoginComplete(字符串消息)中正确发现您的哈希。干杯
答案 1 :(得分:1)
因此,在不得不追踪我的手机钥匙几天后感到沮丧之后,我决定调查一下它在做什么。
经过一些研究后发现,当你发布到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 );
我创建了一个小型仓库,提供修复以及一些gui更改,以便更新密钥哈希更容易。
Github Facebook Unity SDK 6.1 Fix
更新 - 修复了OS X与字符串路径上的空间转义相关的错误
希望这有帮助!
答案 2 :(得分:0)
从登录功能中取出“电子邮件”权限并尝试使用。哎呀我以为我也看到了“publish_actions”的许可。
确保清单中的loginactivity是纵向的。
答案 3 :(得分:0)
不要自己实现所有内容,请尝试使用免费的开源SOOMLA Profile插件来满足您的所有社交网络需求: https://github.com/soomla/unity3d-profile
也可在资产商店下载: https://www.assetstore.unity3d.com/en/#!/content/24601
它涵盖Facebook,Twitter和Google+,并拥有统一的API,用于登录,发布雕像,上传图像和获取好友列表。为了正确披露,我是其中一位创始人。