ASP.NET Firebase验证令牌ID

时间:2019-02-05 12:12:07

标签: c# asp.net firebase firebase-authentication

我们的用户正在使用带有Firebase的手机和短信进行注册。 当他们登录时,firebase为他们创建一个令牌ID,我们有一个网页。移动应用程序正在通过发布数据服务发送令牌ID。 我想在page_load上验证此令牌。

如何使它最简单?

我尝试过,但是找不到在哪里可以添加Firebase项目api等信息。

using FirebaseAdmin.Auth;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form.Count>0 && Request.Form["token_id"]!=null)
        {
            string result = AskTokenId(Request.Form["token_id"].ToString()).GetAwaiter().GetResult();
        }
    }
    public static async Task<string> AskTokenId(string token_id)
    {
        try
        {
            FirebaseToken decodedToken = await FirebaseAuth.DefaultInstance.VerifyIdTokenAsync(token_id);
            string uid = decodedToken.Uid;
            return uid;
        }
        catch (Exception ex)
        {

            return "e";
        }

    }

}

1 个答案:

答案 0 :(得分:0)

这就是我的方法。

FirebaseApp.DefaultInstance如果您之前已对其进行过初始化,则可以使用。

将通过Firebase服务帐户创建的json文件存储在项目中,然后使用该文件初始化FirebaseApp。

FirebaseApp firebaseApp = FirebaseApp.DefaultInstance;

if (firebaseApp == null)
{

   string credentials = "path-to-your-json-credentials";
   string project_id = "FirebaseProjectId";

   var keypath = HostingEnvironment.MapPath(credentials);

   firebaseApp = FirebaseApp.Create(new AppOptions() { ProjectId = project_id, Credential = GoogleCredential.FromFile(keypath) });
}

FirebaseAuth auth = FirebaseAuth.GetAuth(firebaseApp);
FirebaseToken decodedToken = await auth.VerifyIdTokenAsync(idToken);