C# Firebase验证简单登录
TL;DR:有没有办法在Firebase中通过简单登录(电子邮件/密码)使用C# Firebase验证简单登录,c#,firebase,firebase-security,firebasesimplelogin,rest-firebase,C#,Firebase,Firebase Security,Firebasesimplelogin,Rest Firebase,TL;DR:有没有办法在Firebase中通过简单登录(电子邮件/密码)使用auth=CREDENTIALS 我正在尝试将我的C#应用程序的用户连接到我的Firebase。我可以使用我的秘密令牌设置几乎所有的呼叫,但现在我至少需要能够获取当前用户UID,以便知道数据应该发送到哪里 我的PUSH、PUT、GET请求是这样的,使用我的秘密令牌作为登录名: var authToken = "SECRET"; url = "https://MyLocation.firebaseio.com/" + ur
auth=CREDENTIALS
我正在尝试将我的C#应用程序的用户连接到我的Firebase。我可以使用我的秘密令牌设置几乎所有的呼叫,但现在我至少需要能够获取当前用户UID,以便知道数据应该发送到哪里
我的PUSH、PUT、GET请求是这样的,使用我的秘密令牌作为登录名:
var authToken = "SECRET";
url = "https://MyLocation.firebaseio.com/" + url + ".json?auth=" + authToken;
return WebRequest.Create(url);
但是现在我想得到一些支持电子邮件/密码简单登录的东西,比如:
var authToken = "{email:an@email.com, password:thePassword}";
url = "https://MyLocation.firebaseio.com/" + url + ".json?auth=" + authToken;
return WebRequest.Create(url);
我使用CURL的尝试没有成功。。。也许没有办法做到这一点?或者有什么建议
谢谢你的帮助 我和Firebase的支持人员交谈,找到了一个临时解决方案,一个真正的解决方案 真正的解决方案:使用Firebase作为“数据库”,在所有环境中手动管理用户及其密码。这基本上就是我想对我的问题做的。这是我们在使用中的决心 临时解决方案:(以及我所做的,因为我不需要像真正的解决方案那样多的安全性)
byte[] result = System.Text.Encoding.UTF8.GetBytes(email);
email = Convert.ToBase64String(result);
firebaseio.com/Base64
var ref=新Firebase(“https://aFirebase.firebaseio.com");
//事情发生了
...
//我们注册了一个用户
函数createUser(电子邮件、密码){
//允许我们在firebase中创建用户
ref.createUser({
电邮:电邮,,
密码:密码
},函数(错误,用户数据){
如果(错误){
//创建用户失败
警报(错误);
}否则{
//用户创建成功
log(“已成功创建uid为:,userData.uid的用户帐户”);
//我们确保我们在火力基地的正确位置
ref=ref.root().child(base64.encode(email));
//我们检查孩子是否存在
如果(ref==ref.root()){
//这个孩子不存在
//我们必须创造它
用户={};
//使用UID值设置子项,该值将符合规则
用户[base64.encode(email)]={uid:userData.uid};
//我们在firebase中为新来的孩子设定了价值观
参考集(用户);
}否则{
//如果孩子存在,我们可以根据我们的规则更新他的信息
ref.update({uid:userData.uid});
}
//谁想注册然后不登录?
//如果他的电子邮件未经验证,我们可以在登录时添加一些内容。。。
登录(电子邮件、密码);
}
}
);
}
这样,应用程序在某种程度上是安全的(只要用户使用C#应用程序和JS应用程序,规则将在其中设置)。对于WebApi应用程序,JWT令牌可以与OWIN管道一起使用
app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new[] { FirebaseValidAudience },
Provider = new OAuthBearerAuthenticationProvider
{
OnValidateIdentity = OnValidateIdentity
},
TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKeys = issuerSigningKeys,
ValidAudience = FirebaseValidAudience,
ValidIssuer = FirebaseValidIssuer,
IssuerSigningKeyResolver = (arbitrarily, declaring, these, parameters) => issuerSigningKeys
}
});
以下是Firebase ASP.NET WebApi身份验证应用程序的示例:
app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new[] { FirebaseValidAudience },
Provider = new OAuthBearerAuthenticationProvider
{
OnValidateIdentity = OnValidateIdentity
},
TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKeys = issuerSigningKeys,
ValidAudience = FirebaseValidAudience,
ValidIssuer = FirebaseValidIssuer,
IssuerSigningKeyResolver = (arbitrarily, declaring, these, parameters) => issuerSigningKeys
}
});