드디어 Firebase Admin SDK Go 등장!

11416 단어 GoFirebase
기다리던 Firebase 공식 Go SDK가 등장했습니다.
Introducing Firebase Admin SDK for Go

설치


다음 명령을 사용하여 설치할 수 있습니다.
go get -u firebase.google.com/go

서비스 계정 키 만들기


먼저 GCP의 서비스 계정을 사용하여 인증합니다.
https://console.cloud.google.com/iam-admin/serviceaccounts/project?project={projectID}&authuser=0 키를 만듭니다.

다운로드된 키는 서비스_account.json으로 저장되었습니다.

설치하다


다음 코드를 통해 키 파일을 읽고 Firebase를 설정할 수 있습니다.
import (
    firebase "firebase.google.com/go"
    "google.golang.org/api/option"
)

opt := option.WithCredentialsFile("service_account.json")
app, err := firebase.NewApp(context.Background(), nil, opt)

사용자 지정 태그 만들기


auth#Client.CustomToken를 사용하여 사용자 정의 영패를 만들 수 있습니다.
사용자 지정 태그는 자신의 인증 시스템에서 사용자를 관리하는 구조이다.자세한 내용은 문서 을 참조하십시오.
auth, err := app.Auth()
if err != nil {
    panic(err)
}
tok, err := auth.CustomToken("some-id")
if err != nil {
    panic(err)
}
log.Printf("tok = %v", tok)
또한 auth#Client.CustomTokenWithClaims 사용자 정의 영패에 모든 값을 포함하고 이 값을 사용하여 실시간 데이터베이스와 보안 규칙을 저장할 수 있습니다.
tok, err = auth.CustomTokenWithClaims("some-id", map[string]interface{}{
    "premium": true, // プランの実装とかに使える
})
if err != nil {
    panic(err)
}
log.Printf("tok = %v", tok)

확인 표시


auth#Client.VerifyIDToken 영패 검증에 사용.여기서 검증할 영패는 클라이언트 SDKfirebase.User#getIdToken가 발행한 영패에 대한 검증이기 때문에 방금 만든 사용자 정의 영패를 검증할 수 없습니다.
// ftok is user.getIdToken() response
ftok := ``
t, err := auth.VerifyIDToken(ftok)
if err != nil {
    panic(err)
}
log.Printf("t = %#v", t)

전체 코드


basic.go
package main

import (
    "context"
    "log"

    firebase "firebase.google.com/go"
    "google.golang.org/api/option"
)

func main() {
    opt := option.WithCredentialsFile("../service_account.json")
    app, err := firebase.NewApp(context.Background(), nil, opt)
    if err != nil {
        panic(err)
    }
    auth, err := app.Auth()
    if err != nil {
        panic(err)
    }
    tok, err := auth.CustomToken("some-id")
    if err != nil {
        panic(err)
    }
    log.Printf("tok = %v", tok)

    tok, err = auth.CustomTokenWithClaims("some-id", map[string]interface{}{
        "premium": true,
    })
    if err != nil {
        panic(err)
    }
    log.Printf("tok = %v", tok)

    // ftok is user.getIdToken() response
    ftok := ``
    t, err := auth.VerifyIDToken(ftok)
    if err != nil {
        panic(err)
    }
    log.Printf("t = %#v", t)
}

총결산


현재 할 수 있는 일은 사용자 정의 영패를 만들고 Firebase 영패를 검증하는 것뿐이며, 앞으로 스타를 더해 따뜻한 시선으로 지켜줄 것을 기대하고 있다.

좋은 웹페이지 즐겨찾기