google.go 1019 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package oauth2
  2. import (
  3. "encoding/json"
  4. "io/ioutil"
  5. "net/http"
  6. "golang.org/x/oauth2"
  7. "golang.org/x/oauth2/google"
  8. )
  9. type GoogleField struct {
  10. ID string `json:"id"`
  11. Email string `json:"email"`
  12. VerifiedEmail bool `json:"verified_email"`
  13. Name string `json:"name"`
  14. GivenName string `json:"given_name"`
  15. FamilyName string `json:"family_name"`
  16. Picture string `json:"picture"`
  17. Locale string `json:"locale"`
  18. }
  19. func googleScope() []string {
  20. return []string{"https://www.googleapis.com/auth/userinfo.profile",
  21. "https://www.googleapis.com/auth/userinfo.email"}
  22. }
  23. func googleEndpoint() oauth2.Endpoint {
  24. return google.Endpoint
  25. }
  26. func googleUserInfo(accessToken string) (string, error) {
  27. response, err := http.Get("https://www.googleapis.com/oauth2/v2/userinfo?access_token=" + accessToken)
  28. defer response.Body.Close()
  29. contents, err := ioutil.ReadAll(response.Body)
  30. var data GoogleField
  31. json.Unmarshal([]byte(contents), &data)
  32. return data.Email, err
  33. }