Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar el marco laravel de PHP para integrar rápidamente el inicio de sesión de WeChat

Cómo utilizar el marco laravel de PHP para integrar rápidamente el inicio de sesión de WeChat

1. Instale php_weixin_provider

Ejecute el compositor que requiere terceros proveedores/weixin en el proyecto. Después de una instalación exitosa, debería poder ver el archivo de biblioteca de php_weixin_provider en el directorio de proveedores del proyecto:

imagen

2 Configurar los parámetros de inicio de sesión de WeChat

a. **** Hay 7 parámetros que se pueden configurar, los cuales son:

client_id: corresponde a la cuenta pública de la aplicación appid creada

client_secret: corresponde a la aplicación appid creada por la cuenta pública

redirect: corresponde a la dirección de devolución de llamada después de la autorización exitosa de WeChat

proxy_url: corresponde a la dirección del servicio proxy autorizada por WeChat (lea este artículo para comprender su función)

Equipo: distinga si se trata de un inicio de sesión de WeChat para PC o de un inicio de sesión de WeChat móvil. El valor predeterminado es PC. Si es un teléfono móvil, se puede configurar en vacío

state_cookie_name: El enlace de autorización contendrá un parámetro de estado aleatorio, que estará intacto en la devolución de llamada de WeChat. Devuelto sin cambios, puede saber si la solicitud es válida verificando que los parámetros de estado sean los mismos que los pasados ​​en el enlace de autorización. Al verificar que los parámetros de estado sean los mismos que los pasados ​​en el enlace de autorización, puede determinar si la solicitud es válida y evitar ataques CSRF. En este caso, los parámetros de estado se almacenarán en la cookie durante la autorización, por lo que este parámetro se utiliza para especificar el nombre de la cookie que almacena los parámetros de estado. El valor predeterminado es wx_state_cookie

state_cookie_time: especifica el. tiempo de validez de la cookie de estado, el valor predeterminado es 5 minutos

State_cookie_time: especifica el tiempo de validez de la cookie de estado, el valor predeterminado es 5 minutos. durante 5 minutos

Hay 2 formas de configurar estos 7 parámetros. El primer método es configurar estos parámetros en letras mayúsculas en el archivo de configuración .env:

imagen

Nota: 1. Cada elemento de configuración comienza con las letras mayúsculas WEIXIN_; Los primeros tres elementos de configuración no son exactamente los mismos que los nombres de los parámetros introducidos anteriormente. KEY corresponde a client_id, SECRET corresponde a KEY corresponde a client_id, SECRET corresponde a client_secret y REDIRECT_URI corresponde a redirigir 3. Otros elementos de configuración son consistentes con los nombres de parámetros introducidos anteriormente.

El segundo método es configurar estos parámetros en el archivo config/services.php:

imagen

En este método de configuración, cada elemento de configuración Los nombres son los mismos que los descritos anteriormente.

Cosas a tener en cuenta:

Dado que php_weixin_provider se implementa en función de laravel/socialite, es necesario configurar client_id, client_secret y redirigir; de lo contrario, el proceso de creación de instancias de php_weixin_provider saldrá mal para client_id; y client_secret, creo que no hay problema si se configura de manera uniforme en un lugar, pero para la redirección, si se configura de manera uniforme, es posible que no satisfaga las necesidades de todos los escenarios, porque no todos los lugares donde se usa WeChat para iniciar sesión, la dirección de devolución de llamada final es la misma; por lo tanto, se recomienda configurar primero la redirección para que sea válida o no válida y no esté vacía.

Por lo tanto, se recomienda configurar la redirección a una dirección de devolución de llamada no vacía válida o no válida; sin embargo, cuando utilice php_weixin_provider en el futuro, también puede cambiar el valor de este parámetro al llamar;

se recomienda configurar proxy_url (si lo hay) en el **** público;

state_cookie_name y state_cookie_time tienen valores predeterminados, por lo que básicamente no es necesario volver a configurar

se puede especificar al usarlo.

Todos los parámetros de configuración se pueden volver a especificar durante el uso.

3. Registre php_weixin_provider

Busque la sección Proveedores en el archivo config/app.php del proyecto y agregue el siguiente código en su matriz de configuración:

imagen

4. Regístrese para escuchar eventos de inicio de sesión de terceros

Agregue el siguiente código php en app/Providers/EventServiceProvider:

image

El marco de laravel en su conjunto es una idea impulsada por eventos y COI. Las personas que están familiarizadas con js estarán muy familiarizadas con la tecnología impulsada por eventos, y las personas que están familiarizadas con los patrones de diseño estarán muy familiarizadas con el COI (control) y los eventos. -impulsado. La inversión, también conocida como DI: Inyección de dependencia) es más familiar y es clave para comprender el papel de la configuración en los pasos 3 y 4.

5. Escribir la interfaz de inicio de sesión de WeChat

Ejemplo:

Ver código

Socialite::with('weixin') devuelve la instancia php_weixin_provider. , es decir,:

Imagen

Obtener Una vez que tenga esta instancia, puede usar llamadas en cadena a todos los métodos públicos que proporciona, como establecer parámetros de configuración, setDevice, etc. .

6. Escribir interfaz para devolución de llamada de inicio de sesión de WeChat

Ejemplo:

Ver código

A través de Socialite::with('weixin') Después de obtener la instancia de php_weixin_provider, llame al método de usuario, que llamará automáticamente a la interfaz relevante de WeChat. Y encapsule el valor de retorno de weixin en un objeto y devuélvalo. Si se produce algún error durante este proceso, se generará como excepción, como una falla de validación de parámetros de estado, una falla de código, etc.

El objeto $user devuelto contiene los siguientes atributos válidos:

imagen

Resumen:

Este escenario se implementa en base a laravel/ socialité y publicado para uso del compositor. laravel/socialite es el módulo de inicio de sesión oficial de terceros de Laravel. Basado en este módulo, la mayoría de las plataformas de terceros se pueden integrar fácilmente para la autenticación. Actualmente, el funcionario ha proporcionado múltiples implementaciones de inicio de sesión de terceros: https://socialiteproviders.github. .io/. Además de Facebook extranjero, Google, GitHub, etc., también se proporcionan Weibo, WeChat y QQ nacionales. Inicialmente utilicé el proveedor de inicio de sesión predeterminado de Weibo, pero luego descubrí los siguientes problemas:

1. Los agentes autorizados de Weibo no son compatibles;

2. dos proyectos:

Imágenes

3. Encapsula objetos de usuario que no contienen unionid

3. Encapsula objetos de usuario que no contienen unionid Objeto de usuario<. /p>

4. Encapsula el objeto de usuario que no contiene unionid

5.

Objeto de usuario que no contiene unionid

4. El método para cambiar los parámetros de configuración realmente no es fácil de usar:

Imágenes

Así que inicié sesión en proveedor en el WeChat oficial. Reimplementé uno basado en él y resolví el problema que encontré.