Falta el parámetro de dirección de devolución de llamada en el enlace de autorización de OAuth

Hay un parámetro de dirección de devolución de llamada en el enlace de autorización de OAuth:

https://developers.e.qq.com/oauth/authorize?client_id=123456&redirect_uri=https://www.baidu.com?platform=jiaobuchong&name=jack&state=&scope=ADS_MANAGEMENT

El parámetro de dirección de devolución de llamada en este enlace de autorización es:

https://www.baidu.com?platform=jiaobuchong&name=jack

Después de la autorización, la dirección se convierte en:

https://www.baidu.com?platform=jiaobuchong&auth_code=xxxxxxx

Falta el parámetro name = jack. La solución es platform=jiaobuchong&auth_code=xxxxxxxejecutar URLEncoder en el parámetro de consulta en la dirección de devolución de llamada . Como:

public class UrlencoderDemo {
    
    

    public static void main(String[] args) throws Exception {
    
    
        String url = "https://www.baidu.com?platform=jiaobuchong&name=jack";
        System.out.println(getEncodeQueryUrl(url));
        System.out.println(getEncodeQueryUrl("https://www.baidu.com?"));
        System.out.println(getEncodeQueryUrl("https://www.baidu.com"));
        System.out.println(getEncodeQueryUrl("https://www.baidu.com/"));

    }

    public static String getEncodeQueryUrl(String url) throws UnsupportedEncodingException {
    
    

        if (StringUtils.isBlank(url)) {
    
    
            throw new IllegalArgumentException("url is blank");
        }
        int pos = url.lastIndexOf("?");
        if (pos > -1 && (pos < (url.length() - 1))) {
    
    
            return url.substring(0, pos + 1) + URLEncoder.encode(url.substring(pos + 1), "UTF-8");
        }

        return url;
    }
}

Salida:

https://www.baidu.com?platform%3Djiaobuchong%26name%3Djack
https://www.baidu.com?
https://www.baidu.com
https://www.baidu.com/

El enlace de autorización se vuelve correcto así:

https://developers.e.qq.com/oauth/authorize?client_id=123456&redirect_uri=https://www.baidu.com?platform%3Djiaobuchong%26name%3Djack&state=&scope=ADS_MANAGEMENT

Referencia: Cuando la
devolución de llamada de autorización de WeChat, faltan los parámetros originales en la dirección de devolución de llamada .
Problema de solicitud de múltiples parámetros de la URL de la interfaz de autorización de desarrollo de WeChat
. Los caracteres especiales escapan de la codificación en la URL de la URL

Supongo que te gusta

Origin blog.csdn.net/jiaobuchong/article/details/89344489
Recomendado
Clasificación