43 lines
739 B
Go
43 lines
739 B
Go
package backend
|
|
|
|
import (
|
|
"context"
|
|
|
|
firebase "firebase.google.com/go/v4"
|
|
"firebase.google.com/go/v4/auth"
|
|
"google.golang.org/api/option"
|
|
)
|
|
|
|
type Client struct{ *auth.Client }
|
|
|
|
func NewClient(c *Config) (*Client, error) {
|
|
var err error
|
|
|
|
client := new(Client)
|
|
ctx := context.Background()
|
|
opt := option.WithCredentialsFile(c.FirebaseKey)
|
|
|
|
app, err := firebase.NewApp(ctx, nil, opt)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
client.Client, err = app.Auth(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return client, nil
|
|
}
|
|
|
|
func (c *Client) Verify(idToken string) (*auth.Token, error) {
|
|
ctx := context.Background()
|
|
|
|
token, err := c.VerifyIDTokenAndCheckRevoked(ctx, idToken)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return token, nil
|
|
}
|