feat: improve the error message of GitHub OAuth provider (#3462)

This commit is contained in:
DacongDA 2024-12-29 21:54:54 +08:00 committed by GitHub
parent 8927e08217
commit 0d239ba1cf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -195,6 +195,12 @@ type GitHubUserEmailInfo struct {
Visibility string `json:"visibility"` Visibility string `json:"visibility"`
} }
type GitHubErrorInfo struct {
Message string `json:"message"`
DocumentationUrl string `json:"documentation_url"`
Status string `json:"status"`
}
func (idp *GithubIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) { func (idp *GithubIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) {
req, err := http.NewRequest("GET", "https://api.github.com/user", nil) req, err := http.NewRequest("GET", "https://api.github.com/user", nil)
if err != nil { if err != nil {
@ -236,6 +242,15 @@ func (idp *GithubIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error)
return nil, err return nil, err
} }
if respEmail.StatusCode != 200 {
var errMessage GitHubErrorInfo
err = json.Unmarshal(emailBody, &errMessage)
if err != nil {
return nil, err
}
return nil, fmt.Errorf("%s, %s", errMessage.Message, errMessage.DocumentationUrl)
}
var userEmails []GitHubUserEmailInfo var userEmails []GitHubUserEmailInfo
err = json.Unmarshal(emailBody, &userEmails) err = json.Unmarshal(emailBody, &userEmails)
if err != nil { if err != nil {