簡體   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