Changeset 19638 in josm for trunk/src


Ignore:
Timestamp:
2026-10-06T09:00:18+02:00 (10 days ago)
Author:
stoecker
Message:

oauth2 for a non-OSM fails setup on upload, patch by wangi, fix #24925

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/oauth/OAuthParameters.java

    r19627 r19638  
    263263                    return remembered;
    264264                }
    265                 return createDefault(apiUrl, oAuthVersion);
     265                // Use the URL as it was given: apiUrl is the host by now, which is never a valid URL, so
     266                // createDefault() would silently fall back to the API currently configured in the preferences.
     267                return createDefault(originalApiUrl, oAuthVersion);
    266268            default:
    267269                throw new IllegalArgumentException("Unknown OAuth version: " + oAuthVersion);
  • trunk/src/org/openstreetmap/josm/io/OsmConnection.java

    r19536 r19638  
    3434import org.openstreetmap.josm.tools.JosmRuntimeException;
    3535import org.openstreetmap.josm.tools.Logging;
     36import org.openstreetmap.josm.tools.Utils;
    3637
    3738/**
    … …  
    147148     */
    148149    private void obtainOAuth20Token() throws MissingOAuthAccessTokenException {
     150        if (Utils.isEmpty(this.oAuth20Parameters.getClientId())) {
     151            // Without a client id the authorization request is rejected by the server with "Missing required
     152            // parameter: client_id", so do not send the user to the browser at all. The message of the exception
     153            // is for the log only; what the user is shown already points at the preferences, which is where the
     154            // client id of an OAuth application registered on this server has to be entered.
     155            throw new MissingOAuthAccessTokenException(
     156                    "No OAuth client id for " + OsmApi.getOsmApi().getServerUrl() + ", cannot request a token");
     157        }
    149158        if (!Boolean.TRUE.equals(GuiHelper.runInEDTAndWaitAndReturn(() ->
    150159                ConditionalOptionPaneUtil.showConfirmationDialog("oauth.oauth20.obtain.automatically",
    … …  
    201210    protected void addOAuth20AuthorizationHeader(HttpClient connection) throws OsmTransferException {
    202211        if (this.oAuth20Parameters == null) {
    203             this.oAuth20Parameters = OAuthParameters.createFromApiUrl(connection.getURL().getHost(), OAuthVersion.OAuth20);
     212            // The parameters are stored under the API URL, so look them up with the API URL and not with the
     213            // host of the request: OAuthParameters.createFromApiUrl() reduces it to the host itself where that
     214            // is what it needs.
     215            this.oAuth20Parameters = OAuthParameters.createFromApiUrl(OsmApi.getOsmApi().getServerUrl(), OAuthVersion.OAuth20);
    204216        }
    205217        OAuthAccessTokenHolder holder = OAuthAccessTokenHolder.getInstance();
Note: See TracChangeset for help on using the changeset viewer.