Created
June 5, 2023 11:27
-
-
Save hvalls/df500689d28e77c84668892f6e827e28 to your computer and use it in GitHub Desktop.
Google token server validation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package auth | |
import ( | |
"encoding/json" | |
"errors" | |
"fmt" | |
"io/ioutil" | |
"net/http" | |
"github.com/golang-jwt/jwt" | |
) | |
type AuthToken struct { | |
AccessToken string `json:"accessToken"` | |
} | |
func ValidateGoogleToken(token string) (*AuthToken, error) { | |
res, err := http.Get("https://oauth2.googleapis.com/tokeninfo?id_token=" + token) | |
if err != nil { | |
return nil, err | |
} | |
if res.StatusCode != http.StatusOK { | |
return nil, errors.New("invalid google token") | |
} | |
body, err := ioutil.ReadAll(res.Body) | |
if err != nil { | |
return nil, err | |
} | |
var googleUser struct { | |
Sub string `json:"sub"` | |
Name string `json:"name"` | |
} | |
json.Unmarshal(body, &googleUser) | |
fmt.Println(googleUser) | |
// TODO: | |
// 1. if sub !exists in db | |
// 2. create user in database with a new ID | |
// 3. get user | |
userId := "12345" | |
jwt, err := generateJwt(userId) | |
if err != nil { | |
return nil, err | |
} | |
return &AuthToken{jwt}, nil | |
} | |
func generateJwt(userId string) (string, error) { | |
var sampleSecretKey = []byte("SecretYouShouldHide") | |
token := jwt.New(jwt.SigningMethodHS256) | |
claims := token.Claims.(jwt.MapClaims) | |
claims["userId"] = userId | |
tokenString, err := token.SignedString(sampleSecretKey) | |
if err != nil { | |
return "", err | |
} | |
return tokenString, nil | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment