diff --git a/server/handlers.go b/server/handlers.go
index 926b4000097a81c1dd0015b41d3fa42ddffa2103..430253c3b32d448038c79fbbc8ab795079467148 100644
--- a/server/handlers.go
+++ b/server/handlers.go
@@ -222,12 +222,9 @@ func (s *Server) handleConnectorLogin(w http.ResponseWriter, r *http.Request) {
 		}
 		return
 	}
-	scopes := parseScopes(authReq.Scopes)
-	showBacklink := len(s.connectors) > 1
 
-	switch r.Method {
-	case "GET":
-		// Set the connector being used for the login.
+	// Set the connector being used for the login.
+	if authReq.ConnectorID != connID {
 		updater := func(a storage.AuthRequest) (storage.AuthRequest, error) {
 			a.ConnectorID = connID
 			return a, nil
@@ -237,7 +234,13 @@ func (s *Server) handleConnectorLogin(w http.ResponseWriter, r *http.Request) {
 			s.renderError(w, http.StatusInternalServerError, "Database error.")
 			return
 		}
+	}
 
+	scopes := parseScopes(authReq.Scopes)
+	showBacklink := len(s.connectors) > 1
+
+	switch r.Method {
+	case "GET":
 		switch conn := conn.Connector.(type) {
 		case connector.CallbackConnector:
 			// Use the auth request ID as the "state" token.