···123123 }
124124125125 userId, hasSession := session.GetUserID(r.Context())
126126-127126 // store token and get uid
128128- userID, err := o.tokenReceiver.SetAccessToken(token.AccessToken, userId, hasSession)
127127+ userID, err := o.tokenReceiver.SetAccessToken(token.AccessToken, token.RefreshToken, userId, hasSession)
129128 if err != nil {
130129 log.Printf("OAuth2 Callback Info: TokenReceiver did not return a valid user ID for token: %s...", token.AccessToken[:min(10, len(token.AccessToken))])
131130 }
+1-1
oauth/service.go
···1616type TokenReceiver interface {
1717 // stores the access token in the db
1818 // if there is a session, will associate the token with the session
1919- SetAccessToken(token string, currentId int64, hasSession bool) (int64, error)
1919+ SetAccessToken(token string, refreshToken string, currentId int64, hasSession bool) (int64, error)
2020}
+5-5
service/spotify/spotify.go
···117117 return nil
118118}
119119120120-func (s *SpotifyService) SetAccessToken(token string, userId int64, hasSession bool) (int64, error) {
121121- userID, err := s.identifyAndStoreUser(token, userId, hasSession)
120120+func (s *SpotifyService) SetAccessToken(token string, refreshToken string, userId int64, hasSession bool) (int64, error) {
121121+ userID, err := s.identifyAndStoreUser(token, refreshToken, userId, hasSession)
122122 if err != nil {
123123 log.Printf("Error identifying and storing user: %v", err)
124124 return 0, err
···126126 return userID, nil
127127}
128128129129-func (s *SpotifyService) identifyAndStoreUser(token string, userId int64, hasSession bool) (int64, error) {
129129+func (s *SpotifyService) identifyAndStoreUser(token string, refreshToken string, userId int64, hasSession bool) (int64, error) {
130130 userProfile, err := s.fetchSpotifyProfile(token)
131131 if err != nil {
132132 log.Printf("Error fetching Spotify profile: %v", err)
···151151 return 0, fmt.Errorf("user does not seem to exist")
152152 } else {
153153 // overwrite prev user
154154- user, err = s.DB.AddSpotifySession(userId, userProfile.DisplayName, userProfile.Email, userProfile.ID, token, "", tokenExpiryTime)
154154+ user, err = s.DB.AddSpotifySession(userId, userProfile.DisplayName, userProfile.Email, userProfile.ID, token, refreshToken, tokenExpiryTime)
155155 if err != nil {
156156 log.Printf("Error adding Spotify session for user ID %d: %v", userId, err)
157157 return 0, err
158158 }
159159 }
160160 } else {
161161- err = s.DB.UpdateUserToken(user.ID, token, "", tokenExpiryTime)
161161+ err = s.DB.UpdateUserToken(user.ID, token, refreshToken, tokenExpiryTime)
162162 if err != nil {
163163 // for now log and continue
164164 log.Printf("Error updating user token for user ID %d: %v", user.ID, err)