在过去3年中,我们仅将Fire / Js用于Firebase,但现在我们也在使用Unity。
目前的Unity / Firebase在部署时仅适用于Android / iOS,我们99%的工作都在Windows商店中。
我实际上有一个相当不错的Unity / Firebase代码库,但它要求我使用完整的App Secret。
所有其他库都公开了一种使用电子邮件/密码登录的方法,但REST API仅允许使用令牌或您的应用程序机密,然后指出它不建议放入您的客户端;我想,如果你使用的是另一个库,那么你将拥有自己的auth / user方法,我们不会...
现在,我拆开了网络版本并得到了这个:
https://auth.firebase.com/v2/<myfirebase>/auth/password?&email=dennis%40<mysite>&password=<mypassword>v=js-2.2.9&transport=json&suppress_status_codes=true
所以有一个端点,我可以发送东西,我已经在团结内测试它,结果很好。
显然网址不能保证工作,但我想知道是否有任何理由不使用它?
另外,为什么不在官方REST API中公开此端点?
答案 0 :(得分:0)
据我了解,该网址将继续适用于您的旧版Firebase项目。如果要更新到新的Firebase 3.0 API,则必须执行相同类型的逆向工程。但是,如果您仍在使用旧版Firebase项目,我建议您查看this。它尚未更新以与Firebase 3.0一起使用 - 因此我需要执行类似于允许登录新API的操作。
我能够使用C#按照以下方式使用新API执行此操作(其中FirebaseManager是我为全局变量编写的Singleton以及用于写入和读取数据库的函数:
Hashtable loginData = new Hashtable();
loginData.Add ("email", <EMAIL-GOES-HERE>);
loginData.Add ("password", <PASSWORD-GOES-HERE>);
loginData.Add ("returnSecureToken", true);
UnityHTTP.Request loginRequest = new UnityHTTP.Request ("post",
"https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key="
+ <YOUR-PROJECT-API-KEY-GOES-HERE>, loginData);
loginRequest.Send ((request) => {
Hashtable jsonResponse = (Hashtable)JSON.JsonDecode(request.response.Text);
if (jsonResponse == null) {
DisplayErrorMessage("Error logging in. Server returned null or malformed response");
}
FirebaseManager.Instance.idToken = (string)jsonResponse["idToken"]; // This is your auth token
FirebaseManager.Instance.uid = (string)jsonResponse["localId"]; // this is your "uid"
});
// I have a list of users in my db keyed by the "uid" -- I access them like this
UnityHTTP.Request fullnameRequest = new UnityHTTP.Request ("get",
<YOUR-DATABASE-ROOT-URL-HERE>
+ "/users/" + FirebaseManager.Instance.uid + ".json?auth=" + FirebaseManager.Instance.idToken);
fullnameRequest.Send ((request) => {
Debug.Log(request.response.Text);
Hashtable jsonResponse = (Hashtable)JSON.JsonDecode(request.response.Text);
if (jsonResponse == null) {
DisplayErrorMessage("Error getting user info. Server returned null or malformed response");
}
FirebaseManager.Instance.fullname = (string)jsonResponse["fullname"];
FirebaseManager.Instance.groupId = (string)jsonResponse["group"]; // just storing this in memory
});
所以我不认为使用网址有任何损害,只需确保在事情发生变化时预算更多工作时间。