Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo resolver el problema de configurar el nombre de dominio en la página de devolución de llamada de autorización de WeChat OAuth 2.0?

¿Cómo resolver el problema de configurar el nombre de dominio en la página de devolución de llamada de autorización de WeChat OAuth 2.0?

La solución más directa es introducir una aplicación nueva y muy sencilla como servicio proxy autorizado por WeChat. El método específico es el siguiente:

1. Establezca el nombre de dominio de la interfaz de autorización en otro nombre de subdominio, como proxy.your.com;

2. Luego implemente index.php en php_weixin_proxy en proxy.your.com

índice php_weixin_proxy .php es un archivo php muy simple, puede ver directamente el código fuente para comprender cómo se implementa. Debido al entorno actual del proyecto, uso php para completar la implementación de este servicio proxy. De hecho, puedes usar cualquier lenguaje de plataforma para completar funciones similares.

Cuando otros comerciantes necesitan iniciar la autorización de WeChat, primero envían la solicitud de autorización a proxy.your.com y luego proxy.your.com reenvía la solicitud a WeChat;?

Cuando el usuario acepta la autorización, proxy.your.com recibirá la devolución de llamada de autorización de WeChat y devolverá el resultado de la devolución de llamada (código, parámetros de estado) intactos a la empresa que inició originalmente la autorización.

La única diferencia es que, sin utilizar proxy.your.com, el enlace que utiliza para iniciar la autorización de WeChat desde su aplicación debería verse así: ?

/connect /qrconnect? appid=xxxxx&redirect_uri=%2F&response_type=code&scope=snsapi_login&state= 584bc87e11ff37492#wechat_redirect

Si usa proxy.your.com, el enlace de autorización debería verse así:

/?appid =xxxxxx&redirect_uri= %2Flogin%2Fnotify&response_type=code&scope=snsapi_login&state=amp;response_type=code&scope=snsapi_base&state=584bc87e11ff37492&device=pc

El último enlace es más similar al anterior:?

1. p>

2. Este último tiene un parámetro de dispositivo más, que es necesario. Debido a que las direcciones de autorización de WeChat para PC y dispositivos móviles son diferentes, y el enlace posterior es para enviar proxy.your.com, debe agregar un parámetro adicional para indicarle si debe usar la dirección de autorización de PC o dispositivo móvil al reenviar la solicitud de autorización. a la dirección autorizada de WeChat.

1. El usuario activa una operación que requiere autorización de nuestra aplicación, como hacer clic en WeChat para iniciar sesión.

2. Página de autorización de WeChat proporcionada:

o

3. Los usuarios escanean el código a través de WeChat (para autorización basada en PC, arriba a la izquierda) o hacen clic en el botón de confirmación (para autorización basada en dispositivos móviles, Imagen de arriba a la derecha) le dice a WeChat que autorice al mini programa a acceder a la información de su cuenta WeChat;

4. WeChat recibe la autorización del usuario, genera un código de autorización y lo devuelve a una página del mini. programa como parámetro;

5. Después de recibir la solicitud de devolución de llamada de WeChat, la página de devolución de llamada del mini programa obtiene el código de autorización y obtiene el token de acceso a través del token de acceso oficial proporcionado por WeChat.

6. Finalmente, puede obtener la información de la cuenta WeChat del usuario a través del token de acceso y otra interfaz API de información de usuario proporcionada por WeChat.

Para implementar este proceso, primero debe solicitar una cuenta oficial de WeChat para la aplicación y configurar el nombre de dominio que la aplicación eventualmente implementará como la opción de nombre de dominio de la página de devolución de llamada de autorización en la cuenta oficial de WeChat. Configuraciones de la cuenta.

La descripción oficial de WeChat de esta opción es la siguiente:

Acerca del nombre de dominio de devolución de llamada de autorización de la página web

1 Antes de que la cuenta oficial de WeChat solicite autorización web al usuario, los desarrolladores deben hacerlo. al sitio web oficial de la plataforma pública Configure la opción "Desarrollo-Permiso de interfaz-Servicio web-Cuenta web-Autorización web para obtener información básica del usuario" para obtener la información básica del usuario. Antes de solicitar la autorización de red del usuario, los desarrolladores deben ingresar "Desarrollo - Permisos de interfaz - Servicios de red - Cuentas de red - Autorización de red para obtener información básica del usuario" en el sitio web de la plataforma pública y modificar el nombre de dominio de devolución de llamada de autorización. Tenga en cuenta que el nombre de dominio aquí es una cadena, no una URL, así que no lo agregue. Una vez completada la configuración, las páginas /music.html y /login.html bajo este nombre de dominio pueden realizar la autenticación OAuth2.0. Sin embargo, no se puede realizar la autenticación OAuth2.0

3. Si el inicio de sesión de la cuenta oficial está autorizado para ser administrado por un desarrollador externo, no es necesario realizar ninguna configuración. El tercero puede hacerlo. reemplace la cuenta oficial para implementar la autorización de la página web.

Mira, esta regla es extremadamente estricta. Si nuestra aplicación finalmente se implementa con un solo nombre de dominio, entonces esta regla no será un problema, pero considerando la complejidad de la aplicación en el futuro, podemos dividir la aplicación al comienzo del diseño de la aplicación y luego apuntar a diferentes servicios; diferentes nombres de dominio de segundo nivel para la implementación. Por ejemplo, para una aplicación con transacciones, puede separar el registro de inicio de sesión, la gestión de transacciones y el negocio normal, y luego implementarlo de la siguiente manera:

www.your.com, implementar el negocio regular;

trade.your.com, implementa el negocio de gestión de transacciones;

passport.your.com, implementa el negocio de registro de inicio de sesión

En este modo, si la integración Sin WeChat; inicio de sesión y pago de WeChat, la página de devolución de llamada de autorización en las reglas de nombre de dominio descritas anteriormente causará problemas para la aplicación. Aquí: al menos podemos confirmar que tanto trade.your.com como passport.your.com requieren la autorización de WeChat del usuario mencionada anteriormente, pero son dos subdominios diferentes y solo tenemos una cuenta oficial según el dominio de la página de devolución de llamada de autorización; name Según el principio, solo puede usar un nombre de dominio. Solo cuando el nombre de dominio de la dirección de devolución de llamada sea completamente consistente con el nombre de dominio establecido, podremos iniciar con éxito la autorización de WeChat. De lo contrario, se le indicará que el parámetro rediret_uri es incorrecto. o desencadenar el problema de no poder devolver la llamada.

Entonces, ¿cómo afrontar esta situación?

La solución directa es introducir una aplicación nueva y muy sencilla que actúe como un servicio proxy autorizado por WeChat. Puedes hacer esto:?

1. Autorizar el conjunto web de la cuenta oficial. el nombre de dominio de la interfaz a otro nombre de subdominio, como proxy.your.com;

2. Luego implemente index.php en php_weixin_proxy en proxy.your.com

php_weixin_proxy bajo index. php es un archivo php muy simple y puedes mirar directamente el código fuente para ver cómo se implementa. Debido al entorno actual del proyecto, uso php para completar la implementación de este servicio proxy. De hecho, puedes usar cualquier lenguaje de plataforma para completar funciones similares.

Cuando otros comerciantes necesitan iniciar la autorización de WeChat, primero envían la solicitud de autorización a proxy.your.com y luego proxy.your.com reenvía la solicitud a WeChat;?

Cuando el usuario acepta la autorización, proxy.your.com recibirá la devolución de llamada de autorización de WeChat y devolverá el resultado de la devolución de llamada (código, parámetros de estado) intacto a la empresa que inició originalmente la autorización.

La única diferencia es que sin usar proxy.your.com, el enlace que usa para iniciar la autorización de WeChat desde su aplicación debería verse así: ?

/connect/qrconnect?appid =xxxxx&redirect_uri=%2F&response_type=code&scope=snsapi_login&state= 584bc87e11ff37492#wechat_redirect

Si usa proxy.your.com, el enlace de autorización debería verse así:

/?appid= xxxxxx&redirect_uri=% 2Flogin%2Fnotify&response_type=code&scope=snsapi_login&state=amp;response_type=code&scope=snsapi_base&state=584bc87e11ff37492&device=pc

El último enlace es más similar al anterior:?

1.

2. Este último tiene un parámetro de dispositivo más, que es necesario. Debido a que las direcciones de autorización de WeChat para PC y dispositivos móviles son diferentes, y el enlace posterior es para enviar proxy.your.com, debe agregar un parámetro adicional para indicarle si debe usar la dirección de autorización de PC o dispositivo móvil al reenviar la solicitud de autorización. a la dirección autorizada de WeChat.

Solución general:

Resumen:

He probado esta solución y es factible. Aunque se introduce el servicio proxy y se agrega una operación de redirección, dado que esta solicitud de autorización no es necesaria para todas las solicitudes, en realidad no tiene mucho impacto en la experiencia del usuario, pero desde una perspectiva arquitectónica, sus beneficios son muy obvios, como las aplicaciones. Con lógica dividida, las aplicaciones públicas que integran funciones de inicio de sesión y pago no necesitan solicitar una aplicación pública separada para el desarrollo de cada subaplicación (este enfoque es desde una perspectiva empresarial). (Desde una perspectiva empresarial, este enfoque no tiene sentido para una empresa que necesita operar tantas cuentas oficiales).