// FetchUser will go to Twitter and access basic information about the user. func (p *Provider) FetchUser(session goth.Session) (goth.User, error) { user := goth.User{ Provider: p.Name(), } sess := session.(*Session) response, err := p.consumer.Get( endpointProfile, map[string]string{"include_entities": "false", "skip_status": "true"}, sess.AccessToken) if err != nil { return user, err } defer response.Body.Close() bits, err := ioutil.ReadAll(response.Body) err = json.NewDecoder(bytes.NewReader(bits)).Decode(&user.RawData) if err != nil { return user, 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 }