refactor: remove ClientId/ClientSecret/RedirectUrl in IdProvider int /idp/github.go & google.go & qq.go; alter Scopes in QqIdProvider.Config: profile&email -> get_user_info

Signed-off-by: Weihao <1340908470@qq.com>
This commit is contained in:
Weihao
2021-05-16 00:22:15 +08:00
parent 55e0fe14ca
commit f48e04ef15
3 changed files with 14 additions and 35 deletions

View File

@ -25,19 +25,12 @@ import (
) )
type GithubIdProvider struct { type GithubIdProvider struct {
Client *http.Client Client *http.Client
Config *oauth2.Config Config *oauth2.Config
ClientId string
ClientSecret string
RedirectUrl string
} }
func NewGithubIdProvider(clientId string, clientSecret string, redirectUrl string) *GithubIdProvider { func NewGithubIdProvider(clientId string, clientSecret string, redirectUrl string) *GithubIdProvider {
idp := &GithubIdProvider{ idp := &GithubIdProvider{}
ClientId: clientId,
ClientSecret: clientSecret,
RedirectUrl: redirectUrl,
}
config := idp.getConfig() config := idp.getConfig()
config.ClientID = clientId config.ClientID = clientId

View File

@ -25,19 +25,12 @@ import (
) )
type GoogleIdProvider struct { type GoogleIdProvider struct {
Client *http.Client Client *http.Client
Config *oauth2.Config Config *oauth2.Config
ClientId string
ClientSecret string
RedirectUrl string
} }
func NewGoogleIdProvider(clientId string, clientSecret string, redirectUrl string) *GoogleIdProvider { func NewGoogleIdProvider(clientId string, clientSecret string, redirectUrl string) *GoogleIdProvider {
idp := &GoogleIdProvider{ idp := &GoogleIdProvider{}
ClientId: clientId,
ClientSecret: clientSecret,
RedirectUrl: redirectUrl,
}
config := idp.getConfig() config := idp.getConfig()
config.ClientID = clientId config.ClientID = clientId

View File

@ -27,19 +27,12 @@ import (
) )
type QqIdProvider struct { type QqIdProvider struct {
Client *http.Client Client *http.Client
Config *oauth2.Config Config *oauth2.Config
ClientId string
ClientSecret string
RedirectUrl string
} }
func NewQqIdProvider(clientId string, clientSecret string, redirectUrl string) *QqIdProvider { func NewQqIdProvider(clientId string, clientSecret string, redirectUrl string) *QqIdProvider {
idp := &QqIdProvider{ idp := &QqIdProvider{}
ClientId: clientId,
ClientSecret: clientSecret,
RedirectUrl: redirectUrl,
}
config := idp.getConfig() config := idp.getConfig()
config.ClientID = clientId config.ClientID = clientId
@ -60,7 +53,7 @@ func (idp *QqIdProvider) getConfig() *oauth2.Config {
} }
var config = &oauth2.Config{ var config = &oauth2.Config{
Scopes: []string{"profile", "email"}, Scopes: []string{"get_user_info"},
Endpoint: endpoint, Endpoint: endpoint,
} }
@ -70,10 +63,10 @@ func (idp *QqIdProvider) getConfig() *oauth2.Config {
func (idp *QqIdProvider) GetToken(code string) (*oauth2.Token, error) { func (idp *QqIdProvider) GetToken(code string) (*oauth2.Token, error) {
params := url.Values{} params := url.Values{}
params.Add("grant_type", "authorization_code") params.Add("grant_type", "authorization_code")
params.Add("client_id", idp.ClientId) params.Add("client_id", idp.Config.ClientID)
params.Add("client_secret", idp.ClientSecret) params.Add("client_secret", idp.Config.ClientSecret)
params.Add("code", code) params.Add("code", code)
params.Add("redirect_uri", idp.RedirectUrl) params.Add("redirect_uri", idp.Config.RedirectURL)
getAccessTokenUrl := fmt.Sprintf("https://graph.qq.com/oauth2.0/token?%s", params.Encode()) getAccessTokenUrl := fmt.Sprintf("https://graph.qq.com/oauth2.0/token?%s", params.Encode())
tokenResponse, err := idp.Client.Get(getAccessTokenUrl) tokenResponse, err := idp.Client.Get(getAccessTokenUrl)
@ -113,7 +106,7 @@ func (idp *QqIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) {
return nil, errors.New("openId is empty") return nil, errors.New("openId is empty")
} }
getUserInfoUrl := fmt.Sprintf("https://graph.qq.com/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s", token.AccessToken, idp.ClientId, openId) getUserInfoUrl := fmt.Sprintf("https://graph.qq.com/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s", token.AccessToken, idp.Config.ClientID, openId)
getUserInfoResponse, err := idp.Client.Get(getUserInfoUrl) getUserInfoResponse, err := idp.Client.Get(getUserInfoUrl)
if err != nil { if err != nil {
return nil, err return nil, err