Firebaseに対して実際にauthenticateすることはpossibleかどうか疑問に思いましたREST API withouthカスタム認証を使用?
私は現在Firebaseで働いていますが、現在、私のバックエンドをFirebaseに移行することを考えています。現在、バックエンドを使用するアプリはREST APIを使用しており、リアルタイムデータはまったく必要ありません。したがって、REST APIとクライアント上の完全なAndroidフレームワークではありません。
HTTPリクエスト経由でFirebaseのメールおよびパスワード認証を使用して認証トークンを取得することは可能ですか?
古いドキュメント では、カスタムログインを使用したソリューションしか見つかりませんでした 新しいドキュメント では、Googleサービスアカウントが必要なようです。
どんな助けやアドバイスも歓迎します。
Javascript APIによって送信されたリクエストを調べることで、Firebaseの電子メールおよびパスワード認証を実行する方法を見つけました。
これらのAPIは文書化されておらず、サポートされていません
Firebase 3認証は、Google Identity Toolkitの更新および名前変更されたバージョンです。古いドキュメントは完全に正確ではありませんが、役に立つ可能性があり、次の場所にあります。 https://developers.google.com/identity/toolkit/web/reference/
Firebase 3では、すべてのリクエストでヘッダーにContent-Type: application/json
が含まれている必要があります
Firebase 3では、すべての認証リクエストにAPIキーを添付する必要があります。 Firebaseプロジェクトの概要にアクセスして、[FirebaseをWebアプリに追加]をクリックすると、データベースのAPIキーを見つけることができます。次のようなコードのウィンドウが表示されるはずです。
<script src="https://www.gstatic.com/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>
ペイロード:
{
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"
}
メソッド:POST
URL: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>
ペイロード:
{
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のドキュメントに記載されているJSONデータを返します。 https://www.firebase.com/docs/web/guide/login/password.html#section-logging-in
次の形式でGETリクエストを送信することで認証できます。
https://auth.firebase.com/v2/<db_name>/auth/password?&email=<email>&password=<password>
ユーザー作成は、クエリ文字列の一部として_method=POST
を使用して同じGETリクエストを送信することでも実行できます。
https://auth.firebase.com/v2/<db_name>/users?&email=<email>&password=<password>&_method=POST
Firebaseガイドからカスタム認証システムを使用してWebサイトでFirebaseで認証する( https://firebase.google.com/docs/auth/web/custom-auth を参照)
ユーザーが正常にサインインしたときに認証サーバーを変更してカスタム署名済みトークンを生成することにより、Firebase Authenticationをカスタム認証システムと統合できます。アプリはこのトークンを受け取り、それを使用してFirebaseで認証します。
重要なアイデアは次のとおりです:
1)WebプロジェクトにFirebaseを追加し、Firebase REST JavaScript SDK for Authenticationを使用し、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)アプリのユーザーは、ユーザー名とパスワードを使用して認証サーバーにサインインします。サーバーは資格情報を確認し、有効な場合はカスタムトークンを返します。
3)認証サーバーからカスタムトークンを受け取ったら、それをsignInWithCustomTokenに渡してユーザーをサインインさせます
firebase.auth().signInWithCustomToken(token).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
REST APIを試してみると、Apllication。
jsonデータを取得し、認証するかどうかをチェックするだけです。
retrofit Get methodを使用し、firebaseアプリからすべてのデータを取得します。
これは私の投稿です Rerofit + Firebase 初心者がfirebaseとRetrofitの接続を理解するために投稿されました。
[〜#〜] or [〜#〜]
このリンクをクリックしてください。
コーディングをお楽しみください.......
getToken(opt_forceRefresh)
でユーザーのトークンを返すことができるドキュメントによると、電子メールとパスワードで認証された後、トークンを返す必要があります。次のURLで入手できます。
https://firebase.google.com/docs/reference/js/firebase.User#getToken
次のいずれかを実行できると思います。
WebアプリをFirebaseに接続すると、REST APIはユーザー資格情報を受信し、 web APIパスワード認証
FirebaseサーバーSDKを使用して カスタム認証トークン を生成します。トークンはJSON Webトークン(JWT)になります。
Firebaseトークンを生成するためのGitHubのプロジェクトもあります。