Cómo obtener openid en la cuenta oficial de WeChat

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 El identificador único de la cuenta oficial.
redirigir_uri La URL del enlace de devolución de llamada redirigida después de la autorización, utilice urlEncode para procesar el enlace
tipo_respuesta Tipo de devolución, por favor complete el código
alcance 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 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 El identificador único de la cuenta oficial.
secreto El appsecret de la cuenta oficial.
código Complete el parámetro de código obtenido en el primer paso.
tipo_concesión 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.

Supongo que te gusta

Origin blog.csdn.net/xiaolinlife/article/details/132269330
Recomendado
Clasificación