繁体   English   中英

Facebook UNITY SDK登录问题

[英]Facebook UNITY SDK login issue

我刚刚安装了新版本的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并返回,没有任何反应。 有人可以帮忙吗?

sdk的4.3.6版应该可以解决这个问题。 它可以在这里找到: https//developers.facebook.com/我们还在等待它在资产商店获得批准,所以现在唯一能够获得它的地方是来自Facebook的网站。


注意 - 如果您使用的是Mac,它仍然会损坏(2014年5月)。 只需按照“Rafael解决方案”,从public void OnLoginComplete(字符串消息)中正确发现您的哈希。 干杯

因此,在不得不追踪我的手机钥匙几天后感到沮丧,我决定调查它在做什么。

经过一些研究后发现,当你发布到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修复

更新 - 修复了OS X与字符串路径上的空间转义相关的错误

希望这可以帮助!

从登录功能中获取“电子邮件”权限并尝试使用。 哎呀我以为我也看到了“publish_actions”的许可。

确保清单中的loginactivity是纵向的。

不要自己实现所有内容,请尝试使用免费和开源的SOOMLA Profile插件来满足您的所有社交网络需求: https//github.com/soomla/unity3d-profile

也可在资产商店下载: https//www.assetstore.unity3d.com/en/#!/ content / 24601

它涵盖Facebook,Twitter和Google+,并具有统一的API,用于登录,发布雕像,上传图像和获取朋友列表。 为了正确披露,我是其中一位创始人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM