如何检查用户是否已经登录Unity App - c#

我正在Unity中为新应用程序使用Facebook登录名和本机电子邮件注册/登录名。使用SDK,使用FB.IsLoggedIn可以更轻松地检查Facebook的登录状态。但是,在这里,我试图检查用户是否已经使用“本机电子邮件登录”登录到应用程序,并且如果用户已经登录,则不必每次都登录。

我能够登录到该应用程序,该应用程序的后端是一个节点服务器,当一个用户成功登录时,我会从该服务器获得usertoken作为返回,这是使用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…