web-dev-qa-db-ja.com

メールとパスワードを使用してREST API [Firebase]経由で認証する

Firebaseに対して実際にauthenticateすることはpossibleかどうか疑問に思いましたREST API withouthカスタム認証を使用

私は現在Firebaseで働いていますが、現在、私のバックエンドをFirebaseに移行することを考えています。現在、バックエンドを使用するアプリはREST APIを使用しており、リアルタイムデータはまったく必要ありません。したがって、REST APIとクライアント上の完全なAndroidフレームワークではありません。

HTTPリクエスト経由でFirebaseのメールおよびパスワード認証を使用して認証トークンを取得することは可能ですか?

古いドキュメント では、カスタムログインを使用したソリューションしか見つかりませんでした 新しいドキュメント では、Googleサービスアカウントが必要なようです。

どんな助けやアドバイスも歓迎します。

49
Endzeit

更新:Firebase REST認証が文書化されました!

ドキュメントを見る


Firebase REST認証

Javascript APIによって送信されたリクエストを調べることで、Firebaseの電子メールおよびパスワード認証を実行する方法を見つけました。

これらのAPIは文書化されておらず、サポートされていません


Firebase 3

Firebase 3認証は、Google Identity Toolkitの更新および名前変更されたバージョンです。古いドキュメントは完全に正確ではありませんが、役に立つ可能性があり、次の場所にあります。 https://developers.google.com/identity/toolkit/web/reference/

Firebase 3では、すべてのリクエストでヘッダーにContent-Type: application/jsonが含まれている必要があります

APIキー

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 2

これらのリクエストは、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
61
nloewen

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;
  // ...
});
4
Chebyr

REST APIを試してみると、Apllication

jsonデータを取得し、認証するかどうかをチェックするだけです。

retrofit Get methodを使用し、firebaseアプリからすべてのデータを取得します。

これは私の投稿です Rerofit + Firebase 初心者がfirebaseとRetrofitの接続を理解するために投稿されました。

[〜#〜] or [〜#〜]

このリンクをクリックしてください。

REST認証

ユーザー認証

コーディングをお楽しみください.......

2
sushildlh

getToken(opt_forceRefresh)でユーザーのトークンを返すことができるドキュメントによると、電子メールとパスワードで認証された後、トークンを返す必要があります。次のURLで入手できます。

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

1

次のいずれかを実行できると思います。

Firebaseトークンを生成するためのGitHubのプロジェクトもあります。

0
Mina Samy