我正在Unity中为新应用程序使用Facebook登录名和本机电子邮件注册/登录名。使用SDK,使用FB.IsLoggedIn
可以更轻松地检查Facebook的登录状态。但是,在这里,我试图检查用户是否已经使用“本机电子邮件登录”登录到应用程序,并且如果用户已经登录,则不必每次都登录。
我能够登录到该应用程序,该应用程序的后端是一个节点服务器,当一个用户成功登录时,我会从该服务器获得user
和token
作为返回,这是使用passport-local
完成的。每次都使用此令牌作为身份验证令牌,以玩游戏和执行其他选项,但要使用用户必须登录的所有功能。我不知道如何在Unity中处理这些状态。
{
"user": "[email protected],
"token": "sometoken"
}
使用PlayerPrefs,我阅读了一些关于在PlayerPrefs
上存储数据的问答,并且大多数人提到,将其存储在PlayerPrefs
上可能是错误的选择,因为这很容易修改。
我的想法是,我还考虑从Node Server本身来处理它,因为这是我当前的mongodb帐户文档,
{
"_id" : ObjectId("58e73931c2369f1bd8c89ebd"),
"salt" : "saltkey",
"hash" : "somehashkey",
"username" : "[email protected]",
"__v" : 0
}
我正在考虑将另一个字段(例如)_isLoggedIn
添加到具有boolean
值的MongoDB模式中,如果播放器已经登录一次并且尚未从应用程序注销,则将其设置为true
。并检查每次以查看播放器是否已经登录。但是同样,要通过API访问该文档,我需要使用与API传递相同的令牌。如果将token
保存在PlayerPrefs
上,我仍然感到困惑。
有人可以在这里提供想法或代码结构帮助我吗?
参考方案
据我了解,您的问题是在给定时间知道您的用户是否登录,
根据文档Manage Users in Firebase
建议您通过在Auth对象上设置侦听器来获取当前用户
Firebase.Auth.FirebaseAuth auth;
Firebase.Auth.FirebaseUser user;
// Handle initialization of the necessary firebase modules:
void InitializeFirebase() {
Debug.Log("Setting up Firebase Auth");
auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
auth.StateChanged += AuthStateChanged;
AuthStateChanged(this, null);
}
// Track state changes of the auth object.
void AuthStateChanged(object sender, System.EventArgs eventArgs) {
if (auth.CurrentUser != user) {
bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null;
if (!signedIn && user != null) {
Debug.Log("Signed out " + user.UserId);
}
user = auth.CurrentUser;
if (signedIn) {
Debug.Log("Signed in " + user.UserId);
}
}
}
void OnDestroy() {
auth.StateChanged -= AuthStateChanged;
auth = null;
}
您可以按如下方式获取用户个人资料
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
string name = user.DisplayName;
string email = user.Email;
System.Uri photo_url = user.PhotoUrl;
// The user's Id, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server, if you
// have one; use User.TokenAsync() instead.
string uid = user.UserId;
}
我不知道应用程序关闭时是否保留了用户个人资料,因此请检查一下。
使用nodejs中的前端和python中的后端服务器运行Google App Engine的一个实例 - python我对GCP和GAE,nodejs和python及网络(我知道)感到不知所措。[+]我有:基本上,我有一些nodejs代码,它们接受一些输入,然后应该将该输入发送到一些python代码,它将对它做更多的工作。我的第一个想法是通过GAE部署nodejs代码,然后将python代码托管在python服务器中,然后从nodejs前端向python服务器后端发出发布请…
如何检测Android浏览器而不检测Android App(WebView)? - javascript我已经使用WebView为我的网站example.com创建了一个Android应用。现在,我希望用户只能从该应用程序浏览我的网站,所以我想在页脚上显示一条消息,就像Quora对于在浏览器中浏览的Android用户所做的那样。请参阅下图以供参考:现在的问题是,我在应用程序中使用的是example.com的webView,并且我想在“ example.com”…
当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…
在熊猫中,如何从单词列表或单词集中选择数据框中的短语? - python在Python3和熊猫中,我具有数据框:df_projetos_api_final.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 93631 entries, 1 to 93667 Data columns (total 21 columns): AnoMat…
改造正在返回一个空的响应主体 - java我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…