package main import ( "encoding/json" "fmt" "golang.org/x/net/context" "golang.org/x/oauth2" "io/ioutil" "log" "net/http" ) type UserSNSInfo struct { //Id string `json:"id"` Name string `json:"name"` Email string `json:"email"` AccessToken string } func GetAccessToken(config *oauth2.Config, code string) *oauth2.Token { token, err := config.Exchange(context.Background(), code) if err != nil { log.Fatal(err) } fmt.Println(token.AccessToken, "Expire :", token.Expiry, "type: ", token.TokenType) return token } func GetSNSInfo(config *oauth2.Config, code string, snsType SNSType) UserSNSInfo { var response *http.Response var err error accessToken := GetAccessToken(config, code) if snsType == FB_TYPE { response, err = http.Get("https://graph.facebook.com/me?fields=id,name,email&access_token=" + accessToken.AccessToken) } else if snsType == GG_TYPE { response, err = http.Get("https://www.googleapis.com/oauth2/v3/userinfo?access_token=" + accessToken.AccessToken) } if err != nil { fmt.Println(err.Error()) } data, err := ioutil.ReadAll(response.Body) if err != nil { fmt.Println(err.Error()) } userinfo := UserSNSInfo{} json.Unmarshal([]byte(data), &userinfo) userinfo.AccessToken = accessToken.AccessToken fmt.Printf("Username %s and email is %s
", userinfo.Name, userinfo.Email) return userinfo }