我正在使用官方Unity Facebook SDK在我的游戏中开发“使用Facebook登录”支持。实际上我正在使用beta版本6.1(但这个问题也出现在稳定版本6.0中)。
用户可以成功登录,然后我可以发出FB api请求。问题是FB SDK没有保存会话,因为当您关闭应用并再次启动它时,FB.IsLoggedIn
值为false
。
它不适用于任何平台:编辑器,iOS和&机器人。
注意: Facebook设置中的Status
属性已经过检查。
以下是我实施它的方式:
FacebookController.cs
void Awake()
{
if (instance == null)
{
DontDestroyOnLoad(gameObject);
instance = this;
FB.Init(OnFacebookInit);
} else if (instance != this)
{
Destroy(gameObject);
}
}
void OnFacebookInit()
{
if (FB.IsLoggedIn)
{
FBIsLoggedIn();
}
}
public void LoginWithFacebook(OnUserAuthenticated _userAuthCallback)
{
userAuthCallback = _userAuthCallback;
FB.Login("email, user_friends", AuthCallback);
}
void AuthCallback(FBResult result)
{
if (FB.IsLoggedIn)
{
FBIsLoggedIn();
} else
{
Debug.Log("User cancelled login");
}
}
void FBIsLoggedIn()
{
FB.API("me", Facebook.HttpMethod.GET, UserCallBack);
FB.API("me/friends", Facebook.HttpMethod.GET, FriendsCallback);
}
我是否需要添加一些代码才能使FB保存有效会话?
提前致谢!
答案 0 :(得分:1)
我的问题是我希望facebook能够在编辑器上保存会话,而不是。
当您将其构建到设备中时,FB SDK会成功记住上一个有效会话。在我的例子中,我的错误是我没有向用户界面提供反馈。 FB.IsLoggedIn
返回true,但我通过更改UserCallBack
方法中FB登录按钮的状态来解决它。
希望它可以帮到你!
答案 1 :(得分:0)
我的登录系统存在同样的问题。然而<当用户点击"使用Facebook"登录时,我解决了调用相同功能的问题。然后我在Unity编辑器的字典中保存了一个变量,知道这是一个Facebook登录:
PlayerPrefs.SetString("ISFACEBOOK", true);
最后,我在FB.Init()中添加了一个小支票,以检查编辑器是否有该键。
private void InitCallback() { if(FB.IsInitialized){ FB.ActivateApp(); Debug.Log(" [Initcallback] activateApp");
if (true == PlayerPrefs.HasKey("ISFACEBOOK") {
//normal login
FacebookLoginButton();
}
}
else
{
SetMessage("Failed to Initialize the Facebook SDK");
}
如果用户注销,我会从编辑器中删除该变量。
我知道这是一种解决问题的廉价方法,但Facebbok API需要调用FB.LogInWithPublishPermissions或FB.LogInWithReadPermissions。
希望这会对你有所帮助。