programing

메일 및 비밀번호를 사용하여 REST API [Firebase]를 통한 인증

easyjava 2023. 6. 8. 22:43
반응형

메일 및 비밀번호를 사용하여 REST API [Firebase]를 통한 인증

커스텀 인증을 사용하지 않고 Firebase REST API실제로 인증할 수 있는지 궁금합니다.

저는 파이어베이스에서 얼마 동안 일했고 현재 제 백엔드를 파이어베이스로 마이그레이션하는 것에 대해 생각하고 있습니다.백엔드를 사용하는 앱은 현재 REST API를 사용하고 있으며 실시간 데이터가 전혀 필요하지 않습니다.따라서 클라이언트의 전체 안드로이드 프레임워크가 아닌 REST API만 사용하고 싶습니다.

HTTP 요청을 통해 Firebase의 메일 및 비밀번호 인증을 사용하여 인증 토큰을 얻을 수 있습니까?

이전 문서에서는 사용자 지정 로그인이 있는 솔루션만 찾았고 새 문서에서는 Google 서비스 계정이 필요한 것 같습니다.

도움이나 조언을 주시면 감사하겠습니다.

업데이트: Firebase REST 인증이 문서화되었습니다!

설명서 보기


Firebase REST 인증

Javascript API에서 보낸 요청을 검토하여 Firebase에 대한 이메일 및 비밀번호 인증을 수행하는 방법을 알아냈습니다.

이러한 API는 문서화되지 않았으며 지원되지 않습니다.


파이어베이스 3

Firebase 3 인증은 Google Identity Toolkit의 업데이트되고 이름이 변경된 버전입니다.이전 설명서는 완전히 정확하지는 않지만 유용할 수 있으며 https://developers.google.com/identity/toolkit/web/reference/ 에서 찾을 수 있습니다.

파어은이 3모요대해에를 합니다.Content-Type: application/json

API 키

Firebase 3에서는 모든 인증 요청에 API 키를 연결해야 합니다.Firebase 프로젝트 개요를 방문하고 "Add Firebase to your web app"을 클릭하면 데이터베이스에 대한 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"
    }]
}

파이어베이스 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>

등록.

다음과 같은 GET 요청을 전송하여 사용자 생성을 수행할 수도 있습니다._method=POST조회 문자열의 일부로

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

Firebase 가이드에서 사용자 지정 인증 시스템을 사용하여 웹 사이트에서 Firebase로 인증(https://firebase.google.com/docs/auth/web/custom-auth) 을 참조하십시오.

사용자가 성공적으로 로그인할 때 서명된 사용자 지정 토큰을 생성하도록 인증 서버를 수정하여 Firebase 인증을 사용자 지정 인증 시스템과 통합할 수 있습니다.앱이 이 토큰을 수신하여 Firebase 인증에 사용합니다.

핵심 아이디어는 다음과 같습니다.

웹 프로젝트에 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>

앱 사용자는 사용자 이름과 암호를 사용하여 인증 서버에 로그인합니다.서버는 자격 증명을 확인하고 유효한 경우 사용자 지정 토큰을 반환합니다.

인증 서버에서 사용자 지정 토큰을 받은 후 SignInWithCustom에 전달합니다.사용자 로그인 토큰

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

만약 당신이 REST API를 통해 시도한다면 당신은 당신의 애플리케이션에서 모든 작업을 해야 합니다.

json 데이터를 가져와서 인증 여부를 확인하십시오.

retrofitGet 메서드를 사용하여 파이어베이스 앱에서 모든 데이터를 가져옵니다.

이것은 저의 게시물인 Rerofit + Firebase입니다. 저는 초보자들이 Firebase와 Retrofit의 연결을 이해할 수 있도록 게시되었습니다.

OR

이 링크를 통해 ..................

REST 인증

사용자 인증

코딩하는 것을 즐깁니다...

전자 메일 및 암호로 인증한 후 토큰을 반환해야 합니다. 문서에 따르면 사용자의 토큰을 반환할 수 있습니다.getToken(opt_forceRefresh)는 다음 URL에서 확인할 수 있습니다.

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

다음 중 하나를 수행할 수 있다고 생각합니다.

  • 웹 앱을 Firebase에 연결하면 REST API가 사용자 자격 증명을 받은 다음 웹 API 암호 인증을 통해 Firebase로 인증을 처리합니다.

  • Firebase 서버 SDK를 사용하여 사용자 지정 인증 토큰을 생성합니다. 토큰은 JSON토큰(JWT)이 됩니다.

GitHub에는 Firebase 토큰을 생성하는 프로젝트도 있습니다.

언급URL : https://stackoverflow.com/questions/37322747/using-mail-and-password-to-authenticate-via-the-rest-api-firebase

반응형