Change provider interface.

This commit is contained in:
Yang Luo
2021-03-23 23:23:59 +08:00
parent fa141a0edb
commit c24de7d180
5 changed files with 156 additions and 64 deletions

View File

@ -20,18 +20,25 @@ import (
"golang.org/x/oauth2"
)
type IdProvider interface {
GetConfig() *oauth2.Config
GetUserInfo(httpClient *http.Client, token *oauth2.Token) (string, string, string, error)
type UserInfo struct {
Username string
Email string
AvatarUrl string
}
func GetIdProvider(providerType string, clientId string) IdProvider {
type IdProvider interface {
SetHttpClient(client *http.Client)
GetToken(code string) (*oauth2.Token, error)
GetUserInfo(token *oauth2.Token) (*UserInfo, error)
}
func GetIdProvider(providerType string, clientId string, clientSecret string, redirectUrl string) IdProvider {
if providerType == "github" {
return &GithubIdProvider{}
return NewGithubIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "google" {
return &GoogleIdProvider{}
return NewGoogleIdProvider(clientId, clientSecret, redirectUrl)
} else if providerType == "qq" {
return &QqIdProvider{ClientId: clientId}
return NewQqIdProvider(clientId, clientSecret, redirectUrl)
}
return nil