Recientemente, ayudé a otra persona a crear una cuenta oficial de WeChat. Dividiré el proceso en varios artículos y los publicaré todos, incluidos principalmente los problemas encontrados y cómo resolverlos.
Echemos un vistazo al primer punto que encontramos: cómo obtener openid en la cuenta oficial de WeChat, que se explica en la documentación oficial de WeChat.
Proceder de la siguiente:
1. Instrucciones sobre el 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 la autorización de la página web del usuario, el desarrollador debe modificar el nombre de dominio de devolución de llamada de autorización en las opciones de configuración de "Configuración y desarrollo" - "Configuración de funciones" - "Nombre de dominio autorizado de la página web" en el sitio web oficial de la plataforma oficial . Tenga en cuenta que aquí se completa el nombre de dominio (una cadena), no la URL, así que no agregue encabezados de protocolo como http://;2. La especificación de configuración del nombre de dominio para la devolución de llamada de autorización es un nombre de dominio completo. Por ejemplo, el nombre de dominio que requiere autorización de la página web es: www.qq.com, luego de la configuración, las páginas http://www.qq.com/music.html y http://www.qq.com/login. html bajo este nombre de dominio puede realizar la autenticación OAuth2.0. Pero http://pay.qq.com, http://music.qq.com, http://qq.com no pueden realizar la autenticación OAuth2.0. 3. Si el inicio de sesión de la cuenta oficial está autorizado a un desarrollador externo para su administración, no es necesario realizar ninguna configuración y el tercero puede reemplazar la cuenta oficial para realizar la autorización de la página web.
2. Explicación sobre la diferencia entre los dos alcances de autorización de páginas web
1. La autorización de la página web iniciada con snsapi_base como alcance se utiliza para obtener el openid del usuario que ingresa a la página , se autoriza silenciosamente y salta automáticamente a la página de devolución de llamada. Lo que el usuario percibe es ingresar directamente a la página de devolución de llamada (a menudo una página comercial)
2. La autorización de la página web iniciada con snsapi_userinfo como alcance se utiliza para obtener la información básica del usuario . Sin embargo, este tipo de autorización requiere el consentimiento manual del usuario y, dado que el usuario ha aceptado, la información básica del usuario se puede obtener después de la autorización sin prestar atención.
3. La "interfaz de obtención de información básica del usuario" en la interfaz de administración de usuarios es para obtener la información básica del usuario en función del OpenID del usuario después de que el usuario y la cuenta oficial interactúan con el mensaje o siguen el envío del evento. Esta interfaz, incluidas otras interfaces de WeChat, requiere que el usuario (es decir, openid) siga la cuenta oficial antes de llamarla con éxito.
3. Guía de desarrollo
El proceso de autorización de la página web se divide en cuatro pasos:
1. Guíe al usuario para que ingrese a la página de autorización para aceptar la autorización y obtener el código ;
2. Cambie el código por el token de acceso de autorización de la página web (diferente del token de acceso en el soporte básico);
3. Si es necesario, el desarrollador puede actualizar la autorización de la página web access_token para evitar la caducidad
4. Pass La página web autoriza access_token y openid para obtener información básica del usuario (admite el mecanismo UnionID);
Paso 1: El usuario acepta autorizar y obtener el código
Con la premisa de garantizar que la cuenta pública de WeChat tenga el alcance de autorización (parámetro de alcance) (la cuenta de servicio autenticada tiene los permisos snsapi_base y snsapi_userinfo en el parámetro de alcance de forma predeterminada), guíe a los seguidores para que abran la siguiente página:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
toAuthorize() {
window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7f02bc77e643ad90&redirect_uri=https://www.yihaohealth.cn/test4.html&response_type=code&scope=snsapi_base&state=123#wechat_redirect'
},
Descripción del parámetro :
parámetro | Es necesario | ilustrar |
---|---|---|
rápido | Sí | El identificador único de la cuenta oficial. |
redirigir_uri | Sí | La URL del enlace de devolución de llamada redirigida después de la autorización, utilice urlEncode para procesar el enlace |
tipo_respuesta | Sí | Tipo de devolución, por favor complete el código |
alcance | Sí | Alcance de autorización de la aplicación, snsapi_base (sin página de autorización emergente, salto directo, solo se puede obtener openid del usuario), snsapi_userinfo (página de autorización emergente, puede obtener apodo, género y ubicación a través de openid. E, incluso si no lo hace No preste atención, siempre que el usuario lo autorice, la información también se puede obtener) |
estado | No | El parámetro de estado se agregará después de la redirección y el desarrollador puede completar el valor del parámetro a-zA-Z0-9, hasta 128 bytes |
#wechat_redirect | Sí | Ya sea que se abra directamente o al hacer la redirección de la página 302, se debe incluir este parámetro |
fuerza emergente | No | Obligatorio, esta autorización requiere confirmación emergente del usuario; el valor predeterminado es falso; cabe señalar que si el usuario accede a la lógica de autorización silenciosa en un escenario especial, este parámetro no tendrá efecto |
Después de que el usuario acepta la autorización,
si el usuario acepta la autorización, la página saltará a redirigir_uri/?code=CODE&state=STATE .
Descripción del código:
El código se utiliza como ticket a cambio de access_token. El código será diferente cada vez que el usuario lo autorice. El código solo se puede usar una vez y caducará automáticamente después de 5 minutos si no se usa.
Paso 2: Cambie el código por el token de acceso de autorización de la página web
En primer lugar, tenga en cuenta que lo que se intercambia a través del código aquí es un access_token de autorización de página web especial, que es diferente del access_token en el soporte básico (el access_token se usa para llamar a otras interfaces). La cuenta oficial puede obtener el token de acceso de autorización de la página web a través de la siguiente interfaz. Si el alcance de la autorización de la página web es snsapi_base, en este paso se obtiene el token de acceso de autorización de la página web y también se obtiene el openid, y el proceso de autorización de la página web estilo snsapi_base termina aquí .
Preste especial atención: dado que el secreto de la cuenta oficial y el token de acceso obtenido tienen un nivel de seguridad muy alto, solo deben almacenarse en el servidor y no se les permite pasar al cliente. Los pasos posteriores, como actualizar access_token y obtener información del usuario a través de access_token, también deben iniciarse desde el servidor.
método de solicitud
Después de obtener el código, solicite el siguiente enlace para obtener el token de acceso:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
Descripción del parámetro :
parámetro | Es necesario | ilustrar |
---|---|---|
rápido | Sí | El identificador único de la cuenta oficial. |
secreto | Sí | El appsecret de la cuenta oficial. |
código | Sí | Complete el parámetro de código obtenido en el primer paso. |
tipo_concesión | Sí | Complete como código_autorización |
instrucciones de devolución
El paquete de datos JSON devuelto cuando es correcto es el siguiente:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"is_snapshotuser": 1,
"unionid": "UNIONID"
}
De esta manera, puede obtener el openid y, una vez obtenido el openid, puede realizar algunas operaciones de seguimiento, como: pago de WeChat, etc.