2017-08-11 55 views
0

所以我有我的統一應用程序有點工作。現在我的問題是這樣的: the screen which comes up when i press the log in with Facebook button in my scriptFacebook的統一訪問令牌firebase

是在統一編輯器環境下測試時的這個標準嗎?

此外,我注意到屏幕要求輸入令牌。我真正想要做的就是訪問這個令牌並將其傳遞給Facebook的Firebase身份驗證方法。我可以將它保存爲authCallBack函數嗎?如果是這樣,我只需將創建的憑證傳遞給調用身份驗證任務的accessToken方法,或者我當然完全是這樣嗎?任何幫助將不勝感激

這裏是我的代碼:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using Facebook.Unity; 
using Firebase.Auth; 

public class FacebookHandler : MonoBehaviour { 

// Use this for initialization 
private void Awake() 
{ 
    FB.Init(setInit, onHideUnity); 
} 

void setInit() 
{ 
    if (FB.IsLoggedIn) 
    { 
     Debug.Log("fb is logged in"); 
    } 
    else 
     Debug.Log("fb is not logged in"); 
} 

//for whether the game is open or not 
void onHideUnity(bool isGameShown) 
{ 
    if (!isGameShown) 
    { 
     Time.timeScale = 0; 
    } 
    else 
     Time.timeScale = 1; 
} 

public void fbLogin() 
{ 
    List<string> permissions = new List<string>(); 

    //asks facebook for the users profile 
    permissions.Add("public_profile"); 
    permissions.Add("email"); 
    permissions.Add("user_friends"); 

    FB.LogInWithReadPermissions(permissions, authCallBack); 
} 

void authCallBack(IResult result) 
{ 
    if (result.Error != null) 
    { 
     Debug.Log(result.Error); 

    } 
    else 
    { 
     if (FB.IsLoggedIn) 
     { 
      Debug.Log("logged in"); 
      AccessToken token = AccessToken.CurrentAccessToken; 
      Credential credential = FacebookAuthProvider.GetCredential(token.TokenString); 
      accessToken(credential); 
     } 

     else 
      Debug.Log("not logged in"); 
    } 
} 

public void accessToken(Credential firebaseResult) 
{ 
    FirebaseAuth auth = FirebaseAuth.DefaultInstance; 

    if (FB.IsLoggedIn) 
     return; 

    auth.SignInWithCredentialAsync(firebaseResult).ContinueWith(task => 
    { 
     if (task.IsCanceled) 
     { 
      Debug.LogError("SignInWithCredentialAsync was canceled."); 
      return; 
     } 
     if (task.IsFaulted) 
     { 
      Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception); 
      return; 
     } 

     FirebaseUser newUser = task.Result; 
     Debug.LogFormat("User signed in successfully: {0} ({1})", 
      newUser.DisplayName, newUser.UserId); 
    }); 
} 

}

回答

0


是的,這是標準的測試畫面。您可以在Facebook開發者頁面(角色 - >測試用戶 - >點擊編輯按鈕 - >爲此用戶獲取訪問令牌)中獲取測試令牌。每次您的應用程序連接到您的Facebook應用程序時都會生成類似的令牌。通常這是一個短暫的令牌,大約2個小時,所以你不需要保存它。

+0

好的,謝謝。如果我要啓動我的應用程序,有什麼不同的,我需要做我的代碼?即保存訪問令牌? –

+0

如果您計劃爲應用程序開發服務器端,則可以使用應用程序訪問令牌來調試此令牌。爲了確保此令牌來自您的應用程序,但爲了安全起見,應用程序訪問令牌絕不應硬編碼到客戶端代碼中。 –

+0

嗨鮑里斯。仍然有麻煩。我已經完成了訪問令牌調試,當我嘗試在手機上使用它時,我仍然收到無效的訪問令牌。我需要添加哪些代碼才能解決此問題?謝謝。 –