func (s *Storage) LoadAccess(code string) (*osin.AccessData, error) { var userData string var cid, prevAccessToken, authorizeCode string var result osin.AccessData row := s.db.QueryRow("SELECT client, authorize, previous, access_token, refresh_token, expires_in, scope, redirect_uri, created_at, extra FROM access WHERE access_token=$1 LIMIT 1", code) err := row.Scan(&cid, &authorizeCode, &prevAccessToken, &result.AccessToken, &result.RefreshToken, &result.ExpiresIn, &result.Scope, &result.RedirectUri, &result.CreatedAt, &userData) result.UserData = userData client, err := s.GetClient(cid) if err != nil { return nil, err } result.Client = client authorize, err := s.LoadAuthorize(authorizeCode) if err != nil { return nil, err } result.AuthorizeData = authorize if prevAccessToken != "" { prevAccess, err := s.LoadAccess(prevAccessToken) if err != nil { return nil, err } result.AccessData = prevAccess } return &result, err }