Tag: firebase

Firebase .NET令牌validation

处理使用Firebase进行某些数据存储的项目,我们的客户端请求使用C#.NET实现服务器。 我们在服务器上设置REST端点,以便客户端能够出于某些目的与其进行通信(例如,触发只能在服务器上运行的算法)。 Firebase建议我们通过ID令牌识别用户,如下所示: https : //firebase.google.com/docs/auth/server/verify-id-tokens#verify_id_tokens_using_a_third-party_jwt_library 由于没有支持令牌身份validation的官方.NET Firebase服务器SDK,我们已经使用第三方JWT库来执行此操作: https : //github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for -dotnet 根据Firebase文档中的规定,我们首先生成向服务器发送令牌。 在检查令牌中的几个不同字段后,我们使用kid字段从https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com获取公钥。 我们一直在浏览文档和StackOverflow很长一段时间,但是根据Firebase文档的规定,我们找不到使用此公钥来执行此操作的方法: 最后,确保ID令牌由与令牌的孩子声明相对应的私钥签名。 从https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com获取公钥,并使用JWT库validation签名。 Firebase文档实际上没有为此提供任何解释,我们正在使用的库的文档也没有。 因此,当我们给出的所有内容都是公钥时,我们甚至无法获得关于如何validation令牌是否由私钥签名的基本想法。 validation令牌是否由正确的私钥实际签名的最佳方法是什么?

Firebase流式REST连接是否会计入并发连接限制?

在最近的一个问题中,有人指出Firebase定价文档指出: REST API请求不计入您的连接限制 我理解(并欣赏)这个语句似乎意味着什么:针对REST API的GET,PUT,POST和DELETE请求通常用于对数据的非实时操作,例如下载数据以备份或批量计算。 这些通常是不常见的,相对短暂的操作,并且通常应该使实时数据连接的数量相形见绌。 但是,当我们查看Firebase的REST流API时,情况会有所不同。 与REST API的其余部分不同,流式传输显然适用于实时数据连接。 根据上面引用的文档,这些连接不应计入连接限制。 但根据Firebase开发人员对Google网上论坛的评论 : concurrent [connections]是实时客户端或流式REST 我强调的部分似乎暗示使用流式REST API的客户端确实计入连接限制。 为了测试,我编写了一个小型C#客户端,它使用Firebase REST流API来监控节点: var url = “https://.firebaseio.com/clock/.json”; var client = new WebClient(); client.Headers[“Accept”] = “text/event-stream”; using (var stream = client.OpenRead(url)) { using (var reader = new StreamReader(stream)) { string line = null; while (null != (line = reader.ReadLine())) { (DateTime.Now.ToShortTimeString() […]

Firebase云消息传递和C#服务器端代码

我在我的Android和iOS应用程序中使用FCM。 客户端代码工作正常,因为从Firebase控制台我可以向两个平台发送通知而不会出现任何问题。 使用我的C#代码,我可以成功向Android设备发送通知,但除非直接来自Firebase通知控制台,否则通知永远不会出现在iPhone上。 我不知道是什么给了。 C#服务器端代码 try { var applicationID = “application_id”; var senderId = “sender_id”; string deviceId = “device_id_of_reciever”; WebRequest tRequest = WebRequest.Create(“https://fcm.googleapis.com/fcm/send”); tRequest.Method = “post”; tRequest.ContentType = “application/json”; var data = new { to = deviceId, notification = new { body = “This is the message”, title = “This is the title”, icon = […]

将数据从unity发送到firebase生成错误 – 数据无效; 无法解析JSON对象

只需将Unity3d与Firebase一起使用我有一个数据库url,我想发送数据。 我正在使用以下代码 void Start() { BtnSendScore(); } public void BtnSendScore() { StartCoroutine(SendScore(“Muhammad Faizan Khan”, 100)); } public IEnumerator SendScore(string name, int score){ string url = “https://xyz.firebaseio.com/scores.json”; WWWForm objForm =new WWWForm(); objForm.AddField(“playerName”, name); objForm.AddField(“score”, score); objForm.AddField(“scoreDate”, DateTime.Now.ToString()); WWW www = new WWW(url, objForm); yield return www; if (www.error == null) { Debug.Log(“Adedd ::” + www.data); } […]

(新的Firebase Unity SDK)在查询上调用GetValueAsync不会在第一次调用时触发其ContinueWith

我正在使用新的Firebase Unity SDK在我的游戏中建立一个高分,但是在尝试更新我的高分榜时我遇到了一些问题。 这是我尝试更新我的高分榜时运行的代码。 public void GetHighscore(Action callback) { highscoreRef.OrderByChild(“total_score”).LimitToLast(10).GetValueAsync().ContinueWith(task => { if (task.IsFaulted) { // Handle the error… Debug.Log(task.Exception.Message); } else if (task.IsCompleted) { callback(task.Result); } }); } 第一次调用GetHighscore时,它永远不会进入ContinueWith中的lambda函数。 但是,第二次调用它时,它将进入lambda函数并按预期工作。 我在这做错了什么?

为Firebase生成JWT

我正在尝试在Windows上为C#.NET编写一个自定义JWT令牌生成器,以便在Google Firebase中使用。 我从StackOverflow上的几个不同的地方取消了源代码(我正在尝试重新发现它们,所以我可以相信原作者并提出一些额外的问题),所以这有点像一个混蛋。 在大多数情况下它似乎工作,但它似乎没有按预期生成有效(firebase)令牌。 这可能完全是由于我首先对它应该如何工作缺乏了解,但是如果我能从这里得到第二对世界级的工程师眼睛来指出我做错了什么并使事情有效,这会很好。 这是代码: // Token generator setup using Newtonsoft.Json; using System; using System.IO; using System.Web; using System.Web.Configuration; namespace myapp.Utils { public class GoogleJsonWebToken { public static string Encode(string uid) { var utc0 = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); var issueTime = DateTime.Now; var iat = (int)issueTime.Subtract(utc0).TotalSeconds; var exp […]

Firebase身份validationasp.net核心

成功登录Firebase后,我们收到了JWT令牌。 为了向我的asp.net应用程序添加授权,我尝试将JwtBearerAuthentication添加到我的中间件。 我尝试了以下JwtBearerOptions: var options = new JwtBearerOptions { Audience = “myApp”, Authority = “https://securetoken.google.com” }; 和 var options = new JwtBearerOptions { Audience = “myApp”, Authority = “https://securetoken.google.com/myApp” }; 不幸的是,这不起作用。 我的Auhtorityurl可能不正确。 有谁知道Auhtorityurl是否正确?

如何从Unity重命名Firebase中的节点

我在我的应用中使用Firebase-Unity beta工具来获取实时数据。 我想更改树中的节点名称而不覆盖其子节点。 例如: IFirebase firebase; firebase = Firebase.CreateNew (“https://test1.firebaseio.com/someChild”); firebase_Rank.Child(“ChilOne”).SetValue(1); firebase_Rank.Child(“ChilTwo”).SetValue(2); firebase_Rank.Child(“ChilThree”).SetValue(3); 在这种树中,可以更改“ChildOne”的名称而不覆盖它的值。

Firebase 3:使用.net和c#创建自定义身份validation令牌

我正在尝试使用自定义令牌实施Firebase 3身份validation机制(如https:// firebase.google.com/docs/auth/server/create-custom-tokens中所述)。 我的服务器是ASP.NET MVC Application。 因此,根据说明( https://firebase.google.com/docs/server/setup ),我为Firebase应用程序创建了一个服务帐户,并以“.p12”格式生成了一个密钥。 之后根据此处的说明( https://firebase.google.com/docs/auth/server/create-custom-tokens#create_custom_tokens_using_a_third-party_jwt_library )我尝试生成自定义令牌并使用之前收到的密钥对其进行签名步。 对于令牌生成,我使用了Microsoft的SystemIdentityModel.Tokens.Jwt库,因此代码如下所示: var now = DateTime.UtcNow; var tokenHandler = new JwtSecurityTokenHandler(); var key = new X509AsymmetricSecurityKey(new X509Certificate2(p12path, p12pwd)); var signinCredentials = new SigningCredentials(key, “http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”, “http://www.w3.org/2001/04/xmlenc#rsa-sha256”); Int32 nowInUnixTimestamp = (Int32)(now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; var token = tokenHandler.CreateToken( issuer: serviceAccountEmail, audience: “https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit”, signingCredentials: signinCredentials, subject: new […]

在.NET中使用Firebase

我想在我的.NET WPF桌面应用程序中实现Firebase。 我在互联网上找不到有关这个主题的任何有用信息,似乎它完全不受支持。 只有一个Xamarin NuGet包。 有没有可能这样做? 目标是为用户在应用程序中执行的多项操作实施Firebas Analytics。 如果我能找到它们,我甚至会采用正常的REST端点 – 它们隐藏在某个地方……