func (c *githubConnector) Refresh(ctx context.Context, s connector.Scopes, ident connector.Identity) (connector.Identity, error) { if len(ident.ConnectorData) == 0 { return ident, errors.New("no upstream access token found") } var data connectorData if err := json.Unmarshal(ident.ConnectorData, &data); err != nil { return ident, fmt.Errorf("github: unmarshal access token: %v", err) } client := c.oauth2Config(s).Client(ctx, &oauth2.Token{AccessToken: data.AccessToken}) user, err := c.user(ctx, client) if err != nil { return ident, fmt.Errorf("github: get user: %v", err) } username := user.Name if username == "" { username = user.Login } ident.Username = username ident.Email = user.Email if s.Groups && c.org != "" { groups, err := c.teams(ctx, client, c.org) if err != nil { return ident, fmt.Errorf("github: get teams: %v", err) } ident.Groups = groups } return ident, nil }