我正在使用官方Unity Facebook SDK在我的游戏中开发"使用Facebook登录"支持。实际上我使用的是测试版 6.1(但这个问题也在稳定版 6.0 中)。
用户可以成功登录,然后我可以发出FB api请求。问题是FB SDK没有保存会话,因为当您关闭应用程序并再次启动它时,FB.IsLoggedIn
值为false
。
它不适用于任何平台:编辑器,iOS和Android。
注意: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保存有效会话吗?
提前感谢!
我的问题是我希望Facebook将会话保存在编辑器上,而事实并非如此。
当您将其构建到设备中时,FB SDK会成功记住上次的有效会话。在我的示例中,我的错误是我没有向用户界面提供反馈。FB.IsLoggedIn
返回 true,但我通过在 UserCallBack
方法中更改 FB 登录按钮的状态来解决它。
希望对您有所帮助!
我的登录系统也有同样的问题。但是<当用户单击"使用>
PlayerPrefs.SetString("ISFACEBOOK", true);
最后,我在FB中添加了一个小支票。Init() 来检查编辑器是否具有该密钥。
私有 void 初始化回调 () { 如果(FB.已初始化) { FB.激活应用(); 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.
希望这对你有帮助。