// FetchUser will go to Twitter and access basic information about the user. func (p *Provider) FetchUser(session goth.Session) (*goth.User, error) { sess := session.(*Session) response, err := p.consumer.Get( endpointProfile, map[string]string{"include_entities": "false", "skip_status": "true"}, sess.AccessToken) if err != nil { return nil, err } defer response.Body.Close() bits, err := ioutil.ReadAll(response.Body) if err != nil { return nil, err } user := goth.User{} err = json.NewDecoder(bytes.NewReader(bits)).Decode(&user.RawData) if err != nil { return nil, err } user.Name = user.RawData["name"].(string) user.NickName = user.RawData["screen_name"].(string) user.Description = user.RawData["description"].(string) user.AvatarURL = user.RawData["profile_image_url"].(string) user.UserID = user.RawData["id_str"].(string) user.Location = user.RawData["location"].(string) user.AccessToken = sess.AccessToken.Token user.AccessTokenSecret = sess.AccessToken.Secret return &user, err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { ID int `json:"id"` Permalink string `json:"permalink"` Username string `json:"username"` Description string `json:"description"` Picture string `json:"avatar_url"` Name string `json:"full_name"` Country string `json:"country"` City string `json:"city"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Name = u.Name user.NickName = u.Username user.Description = u.Description user.AvatarURL = u.Picture user.UserID = strconv.Itoa(u.ID) user.Location = u.City + " " + u.Country return err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { Data struct { UserID string `json:"id"` AvatarURL string `json:"image"` Description string `json:"bio"` FirstName string `json:"first_name"` LastName string `json:"last_name"` NickName string `json:"username"` } `json:"data"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.NickName = u.Data.NickName user.UserID = u.Data.UserID user.Name = fmt.Sprintf("%s %s", u.Data.FirstName, u.Data.LastName) user.Description = u.Data.Description user.AvatarURL = u.Data.AvatarURL return err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { UserID int `json:"ID"` AvatarURL string `json:"avatar_URL"` Email string `json:"email"` Description string `json:"profile_URL"` Name string `json:"username"` NickName string `json:"display_name"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.NickName = u.NickName user.UserID = strconv.Itoa(u.UserID) user.Name = u.Name user.Description = u.Description user.AvatarURL = u.AvatarURL user.Email = u.Email return err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { ID string `json:"id"` Email string `json:"email"` Bio string `json:"bio"` Name string `json:"name"` Link string `json:"link"` Picture struct { Data struct { URL string `json:"url"` } `json:"data"` } `json:"picture"` Location struct { Name string `json:"name"` } `json:"location"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Name = u.Name user.NickName = u.Name user.Email = u.Email user.Description = u.Bio user.AvatarURL = u.Picture.Data.URL user.UserID = u.ID user.Location = u.Location.Name return err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { Data struct { ID string `json:"id"` Username string `json:"username"` //Email string `json:"email"` Name string `json:"full_name"` Bio string `json:"bio"` Picture string `json:"profile_picture"` Website string `json:"website"` Counts struct { Media int `json:"media"` Follows int `json:"follows"` FollowedBy int `json:"followed_by"` } `json:"counts"` } `json:"data"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Name = u.Data.Name user.NickName = u.Data.Username //user.Email = u.Data.Email user.Description = u.Data.Bio user.AvatarURL = u.Data.Picture user.UserID = u.Data.ID //user.Location = return err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { ID string `json:"id"` Email string `json:"emailAddress"` FirstName string `json:"firstName"` LastName string `json:"lastName"` Headline string `json:"headline"` PictureURL string `json:"pictureUrl"` Location struct { Name string `json:"name"` } `json:"location"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Name = u.FirstName + " " + u.LastName user.NickName = u.FirstName user.Email = u.Email user.Description = u.Headline user.AvatarURL = u.PictureURL user.UserID = u.ID user.Location = u.Location.Name return err }
func userFromReader(reader io.Reader, user *goth.User) error { u := struct { ID int `json:"id"` Email string `json:"email"` Bio string `json:"bio"` Name string `json:"name"` Picture string `json:"avatar_url"` Location string `json:"location"` }{} err := json.NewDecoder(reader).Decode(&u) if err != nil { return err } user.Name = u.Name user.NickName = u.Name user.Email = u.Email user.Description = u.Bio user.AvatarURL = u.Picture user.UserID = strconv.Itoa(u.ID) user.Location = u.Location return err }