使用邮件和密码通过REST API进行身份validation

我想知道是否可以在不使用自定义身份 validation的情况下对Firebase REST API进行身份validation

我已经与Firebase合作了一段时间,目前我正考虑将我的后端迁移到Firebase。 使用后端的应用程序当前使用REST API,根本不需要实时数据。 因此,我只想使用REST API,而不是客户端上的完整Android框架。

是否可以通过HTTP请求使用Firebase的邮件和密码authentication来获得authentication令牌?

在旧文档中,我只find了自定义login的解决scheme,在新文档中您似乎需要Google服务帐户。

任何帮助或build议表示赞赏。

更新:现在logging了Firebase REST身份validation!

查看文档


Firebase REST身份validation

我想通过检查由JavaScript API发送的请求,如何执行Firebase的电子邮件和密码身份validation。

这些API是没有logging和不受支持的


Firebase 3

Firebase 3身份validation是Google Identity Toolkit的更新和重命名版本。 旧的文档不完全准确,但可能是有用的,可以在这里find: https : //developers.google.com/identity/toolkit/web/reference/

Firebase 3要求所有请求在标题中包含Content-Type: application/json

API密钥

Firebase 3需要将API密钥附加到所有身份validation请求。 您可以通过访问Firebase项目概览并点击“将Firebase添加到您的networking应用”来find您的数据库的API密钥。 你应该看到一个代码如下的窗口:

 <script src="firebasejs/live/3.0/firebase.js"> </script> <script> // Initialize Firebase var config = { apiKey: "<my-firebase-api-key>", authDomain: "my-firebase.firebaseapp.com", databaseURL: "https://my-firebase.firebaseio.com", storageBucket: "my-firebase.appspot.com", }; firebase.initializeApp(config); </script> 

复制apiKey值并保存以备后用。

注册

方法: POST

URL: https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=<my-firebase-api-key>https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=<my-firebase-api-key>

有效载荷:

 { email: "<email>", password: "<password>", returnSecureToken: true } 

响应:

 { "kind": "identitytoolkit#SignupNewUserResponse", "localId": "<firebase-user-id>", // Use this to uniquely identify users "email": "<email>", "displayName": "", "idToken": "<provider-id-token>", // Use this as the auth token in database requests "registered": true, "refreshToken": "<refresh-token>", "expiresIn": "3600" } 

login

方法: POST

url: https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=<my-firebase-api-key> : https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=<my-firebase-api-key>

有效载荷:

 { email: "<email>", password: "<password>", returnSecureToken: true } 

响应:

 { "kind": "identitytoolkit#VerifyPasswordResponse", "localId": "<firebase-user-id>", // Use this to uniquely identify users "email": "<email>", "displayName": "", "idToken": "<provider-id-token>", // Use this as the auth token in database requests "registered": true, "refreshToken": "<refresh-token>", "expiresIn": "3600" } 

获取帐户信息

方法: POST

url: https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=<my-firebase-api-key>https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=<my-firebase-api-key>

有效载荷:

 { idToken: "<provider-id-token>" } 

响应:

 { "kind": "identitytoolkit#GetAccountInfoResponse", "users": [ { "localId": "<firebase-user-id>", "email": "<email>", "emailVerified": false, "providerUserInfo": [ { "providerId": "<password>", "federatedId": "<email>", "email": "<email>", "rawId": "<email>" }], "passwordHash": "<hash>", "passwordUpdatedAt": 1.465327109E12, "validSince": "1465327108", "createdAt": "1465327108000" }] } 

Firebase 2

这些请求会返回Firebase文档中描述的JSON数据。 https://www.firebase.com/docs/web/guide/login/password.html#section-logging-in

login

您可以使用以下格式发送GET请求进行身份validation:

 https://auth.firebase.com/v2/<db_name>/auth/password?&email=<email>&password=<password> 

注册

用户创build也可以通过使用_method=POST发送相同的GET请求作为查询string的一部分来执行

 https://auth.firebase.com/v2/<db_name>/users?&email=<email>&password=<password>&_method=POST 

从Firebase指南使用自定义身份validation系统在网站上进行Firebase身份validation(请参阅https://firebase.google.com/docs/auth/web/custom-auth

您可以将Firebase身份validation与自定义身份validation系统集成,方法是修改您的身份validation服务器,以便在用户成功login时生成自定义签名的令牌。您的应用程序会收到此令牌并使用该令牌对Firebase进行身份validation。

这是关键的想法:

1)将Firebase添加到您的Web项目中,并使用Firebase REST JavaScript SDK进行身份validation,并使用Firebase访问存储/实时数据库。

  // TODO: Replace with your project's customized code snippet <script src="https://www.gstatic.com/firebasejs/3.0.2/firebase.js"></script> <script> // Initialize Firebase var config = { apiKey: '<your-api-key>', authDomain: '<your-auth-domain>', databaseURL: '<your-database-url>', storageBucket: '<your-storage-bucket>' }; firebase.initializeApp(config); </script> 

2)您的应用用户使用他们的用户名和密码login到您的authentication服务器。 您的服务器检查凭据并返回自定义标记,如果它们是有效的。

3)从authentication服务器收到自定义令牌后,将其传递给signInWithCustomToken以login用户

 firebase.auth().signInWithCustomToken(token).catch(function(error) { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // ... }); 

如果您尝试使用REST API ,则必须在您的Apllication中执行所有操作。

只需抓住JSON数据,并检查您的身份validation与否

使用改造Get方法 ,只需从您的Firebase应用程序中获取所有数据。

这是我的postRerofit + Firebase ,我被张贴给初学者了解Firebase和Retrofit的连接。

要么

请通过这个链接,它会帮助你…………………

RESTvalidation

用户自动识别

享受编码…….

根据您可以使用getToken(opt_forceRefresh)返回用户getToken(opt_forceRefresh)的文档,在您使用电子邮件和密码进行身份validation后,您需要返回一个标记。

https://firebase.google.com/docs/reference/js/firebase.User#getToken

我相信你可以做以下的一个:

  • 将您的networking应用连接到Firebase,您的REST API将通过接收用户凭证来处理身份validation,然后通过Web API对Firebase进行身份validation密码身份validation

  • 使用Firebase服务器SDK生成自定义身份validation令牌 ,该令牌将是JSON Web令牌(JWT)

GitHub上还有一些项目用于生成Firebase代币:

  • python
  • PHP