使用邮件和密码通过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