WeChat Public Platform lanzó recientemente la autenticación de WeChat, y puede obtener permisos de interfaz avanzados después de la autenticación. Muchos amigos fallan o no pueden entender su contenido al usarlo. Hoy, el editor de New Technology Channel le proporciona la autorización de la página web de WeChat Development para obtener información básica del usuario.
1. ¿Qué es OAuth2.0?
Sitio web oficial: http://oauth.net/ http://oauth.net/2/
Definición autorizada: OAuth es un protocolo abierto para permitir una autorización segura en un método simple y estándar de aplicaciones web, móviles y de escritorio.
OAuth es un acuerdo abierto que permite a los usuarios obtener recursos privados (como información personal del usuario, fotos, videos, listas de contactos) almacenadas por aplicaciones de terceros de manera segura y estándar (como información personal de los usuarios, fotos, videos, listas de contactos) almacenadas en un sitio web, aplicaciones móviles o de escritorio sin proporcionar una contraseña y contraseña a aplicaciones de terceros.
OAuth 2.0 es la próxima versión del Protocolo OAuth, pero no es compatible con OAuth 1.0. OAuth 2.0 se centra en la simplicidad de los desarrolladores de clientes, al tiempo que proporciona un proceso de certificación dedicado para aplicaciones web, aplicaciones de escritorio y teléfonos móviles, y dispositivos de sala de estar.
OAuth permite a los usuarios proporcionar un token en lugar de un nombre de usuario y una contraseña para acceder a los datos que almacenan en un proveedor de servicios específico. Cada token autoriza un sitio web específico (por ejemplo, un sitio web de edición de video) para acceder a un recurso específico (por ejemplo, solo un video en un determinado álbum) dentro de un período de tiempo específico (por ejemplo, dentro de las próximas 2 horas). De esta manera, OAuth permite a los usuarios autorizar a los sitios web de terceros para acceder a la información que almacenan en otro proveedor de servicios sin compartir todos sus permisos de acceso o sus datos.
La API de Sina Weibo actualmente también usa OAuth 2.0.
2. Autorización de la plataforma pública WeChat OAuth2.0
Los pasos detallados para la autorización de la plataforma pública WeChat OAuth2.0 son los siguientes:
1. Los usuarios siguen cuentas públicas de WeChat.
2. La cuenta pública de WeChat proporciona la URL de la página de autorización de solicitud de usuario.
3. El usuario hace clic en la URL de la página de autorización e iniciará una solicitud al servidor.
4. El servidor le pregunta al usuario si acepta autorizar la cuenta pública de WeChat (no existe tal paso cuando el alcance es snsapi_base)
5. El usuario está de acuerdo (no hay tal paso cuando el alcance es snsapi_base)
6. El servidor pasa el código a la cuenta pública de WeChat a través de la devolución de llamada
7. Obtenga código en la cuenta pública de WeChat
8. WeChat Public Cuenta solicita el token de acceso al servidor a través del código
9. El servidor devuelve el token de acceso y OpenId a la cuenta pública de WeChat
10. WeChat Public Cuenta solicita información del usuario al servidor a través del token de acceso (no existe tal paso cuando el alcance es snsapi_base)
11. El servidor envía información del usuario a la cuenta pública de WeChat (no hay tal paso cuando el alcance es snsapi_base)
El APPID y la APPSECRET utilizada se pueden encontrar en la ID de desarrollador-desarrollador de desarrolladores.
1. Configure el nombre de dominio de la página de devolución de llamada de autorización
Después de ingresar a los antecedentes de la plataforma pública de WeChat, ingrese la tabla de permisión central del desarrollador a su vez, busque la autorización de la página web para obtener información básica del usuario.
Haga clic en Editar a la derecha.
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 y no incluye HTTP. Por ejemplo, el nombre de dominio que requiere autorización web es: www.qq.com. Después de la configuración, las páginas debajo de este nombre de dominio http://www.qq.com/music.html y http://www.qq.com/login.html puede realizar una autenticación OAuth2.0. Sin embargo, http://pay.qq.com, http://music.qq.com, y http://qq.com no pueden realizar la autenticación OAuth2.0.
Aquí completamos un nombre de dominio secundario de la aplicación de Baidu de Fangbi Studio como Mascot.duapp.com
Si su URL no está en la lista negra, aparecerá en la parte superior
Luego, la configuración del nombre de dominio tiene éxito.
2. Autorización del usuario y obtener código
En el directorio raíz del nombre de dominio, cree un nuevo archivo, nombrelo oauth2.php, y su contenido es
<? Phpif (isset ($ _ get ['código'])) {echo $ _get ['código'];} else {echo "sin código";}?>Primero comprendamos cómo construir la página de autorización:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=scope&state=state#wechat_redirect
Descripción del parámetro
| parámetro | debe | ilustrar |
|---|---|---|
| aplicar | Sí | El identificador único de la cuenta oficial |
| Redirect_uri | Sí | Dirección de enlace de devolución de llamada redirigida después de la autorización |
| respuesta_type | Sí | Tipo de devolución, complete el código |
| alcance | Sí | Aplicar el alcance de la autorización, SNSAPI_BASE (no aparece la página de autorización, solo saltos, solo se puede obtener el usuario OpenID), snsapi_userinfo (página de autorización emergente, puede obtener el nombre, el género y la ubicación a través de OpenID. Y, incluso si no lo sigue, siempre que el usuario lo autorice, se puede obtener información)) |
| estado | No | Después de la redirección, se incluirán los parámetros de estado, y los desarrolladores pueden completar los valores de los parámetros. |
| #wechat_redirect | No | Abra el enlace directamente en WeChat y no complete este parámetro. Este parámetro debe incluirse al hacer la redirección de la página 302 |
Alcance de autorización de la aplicación: dado que SNSAPI_BASE solo puede obtener OpenID, no tiene mucho sentido, por lo que usamos SNSAPI_USERINFO.
Dirección de devolución de llamada: complete como la dirección del archivo de OAuth2.php recién cargado,
Parámetros de estado: cualquier número, complete 1 aquí
La URL de solicitud de construcción es la siguiente:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx888888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
Envíe este enlace a WeChat para abrir en WeChat Browser. Aquí, use el enlace A para encapsularlo de la siguiente manera:
Bienvenido a seguir [jinbao], lo que puede hacer que sea más conveniente para encontrar tiendas de catering, ropa, tiendas departamentales y salones de belleza que se adapten a sus deseos cerca de usted.
<a href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx888888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">click aquí para atar </a>
Soporte técnico Fangbi Studio
Mostrar lo siguiente en WeChat
Después de hacer clic en el enlace, aparece la interfaz de autorización de la aplicación
Seleccione Permitir, haga clic en
Saltar a la página Auth2.php y ejecutar
echo $ _get ['código']
El código se muestra en la interfaz. En este momento, el enlace se obtiene copiando el enlace en el botón en la esquina superior derecha:
http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1
Obtuvimos con éxito el código.
Nota: Si tal interfaz aparece durante la unión, significa que los parámetros son incorrectos y debe regresar y verificar los parámetros.
3. Use el código para intercambiar access_token
Cómo construir la página Access_token para intercambio para la autorización web:
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 |
|---|---|---|
| aplicar | Sí | El identificador único de la cuenta oficial |
| Secreto | Sí | La cuenta oficial AppSecret |
| código | Sí | Complete los parámetros del código obtenidos en el primer paso |
| Grant_type | Sí | Completar como autorización_code |
Código: Complete aquí como el valor obtenido en el paso anterior
La URL de solicitud de construcción es la siguiente:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8888888888888&secret=aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = 00b78eaaaaaaaaaaaaaaaaaaaaaa = 00b78e3b42043c8459a57a8d8ab5d9f & brind_type = autorization_code
Puede ejecutar esta declaración directamente en el navegador:
(
Aquí está la clave, que es obtener el código de datos JSON a través de la URL anterior
$ ch = curl_init (); curl_setopt ($ ch, curlopt_url, $ url); curl_setopt ($ ch, curlopt_returntransfer, 1); // requiere que el resultado sea una cadena y salida a la pantalla curl_setopt ($ ch, curlopt_header, 0); // El encabezado HTTP acelera la eficiencia curl_setopt ($ ch, curlopt_useragent, 'mozilla/5.0 (compatible; msie 5.01; windows nt 5.0)'); curl_setopt ($ ch, curlopt_timeout, 15); curl_setopt ($ ch, curlopt_ssl_verifypeer, falso); // La solicitud https no verifica certificados y aloja curl_setopt ($ ch, curlopt_ssl_verifyhost, falso); $ output = curl_exec ($ ch); curl_close ($ ch); $ jSondecode = json_decode ($ output); // Codificar cadenas en formato JSON $ array = get_object_vars ($ jSondecode); // Convertir en matriz // Las dos líneas rojas son el punto clave, para HTTPS, he estado luchando por más de un día Echo $ Array;
)
Obtenga los siguientes datos JSON:
{"access_token": "Oezxceiibsksxw0eoyliEasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0zwee5-ubj Bz941eopqdqy5ss_gcs2z40dnvu99y5ai1bw2uqn-2JXOBLIM5D6L9RIMVM8VG8CBAILPWA8VW ", "expires_in": 7200, "refresh_token": "Oezxceiibsksxw0eoyliEasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0zwee5-ubj Bz941eopqdqy5ss_gcs2z40dnvu99y5czpawzksiuz_6x_tfkloxlu7kdkm2232wdxb3msuzq1a ", "OpenId": "Olvppjqs9bhvzwpj5a-vtyax3glc", "Alcance": "snsapi_userinfo,}El formato de datos se interpreta de la siguiente manera:
| parámetro | describir |
|---|---|
| Access_Token | Credenciales de llamadas de interfaz de autorización web, nota: este access_token es diferente del access_token compatible con el básico |
| expires_in | Tiempo de espera de credencial de llamadas de interfaz access_token, unidad (segundos) |
| Refresh_token | Accesorio de actualización del usuario |
| ferenal | Identificador único del usuario. Tenga en cuenta que cuando los usuarios no sigan la cuenta oficial, cuando los usuarios visiten la página web de la cuenta oficial, también generarán un OpenID único para los usuarios y las cuentas oficiales. |
| alcance | El alcance de la autorización del usuario, separado por coma (,) |
Por lo tanto, intercambiamos con éxito Access_Token y Refresh_Token a través del código.
Actualizar access_token
El documento oficial menciona la función de actualizar Access_Token, pero esto no es imprescindible. Puede ignorarlo por primera vez usándolo.
El método de solicitud de URL es el siguiente:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=refresh_token
Descripción del parámetro
| parámetro | ¿Es necesario | ilustrar |
|---|---|---|
| aplicar | Sí | El identificador único de la cuenta oficial |
| Grant_type | Sí | Complete como refresh_token |
| Refresh_token | Sí | Complete el parámetro Refresh_Token obtenido a través de Access_Token |
La estructura es la siguiente:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=WX8888888888888&grant_type=refresh_token&refresh_token=OZXCEIIBSKSXW0EOY liaseSr0gmyd1aWCffdHGB4FHS_KKF2COTGJ2CBNUKQVJ-G0ZWEE5
Ejecutar datos JSON en el mismo formato en el navegador
4. Use Access_Token para obtener información del usuario
Método de solicitud:
https://api.weixin.qq.com/sns/userinfo?access_token=access_token&openid=openid
Descripción del parámetro
| parámetro | describir |
|---|---|
| Access_Token | Credenciales de llamadas de interfaz de autorización web, nota: este access_token es diferente del access_token compatible con el básico |
| ferenal | ID único del usuario |
La URL se construye de la siguiente manera:
https://api.weixin.qq.com/sns/userinfo?access_token=OEZXCEIIBSKSXW0EOYLIEASR0GMYD1AWCFFDHGB4FHS_KKF2COTGJ2CBNUKQVJ-G0Z Wee5-UBJBZ941eopqdqy5SSS_GCS2Z40DNVU99Y5AI1BW2UQN-2JXOBLIM5D6L9RIMVM8VG8CBAALPWA8VW & OPERID = OLVPPJQS9BHVZWPJ5A-VTYAX3GLC
Puede ejecutar esta declaración directamente en el navegador:
Obtenga los siguientes datos JSON:
{ "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "nickname": "fangbi", "sex": 1, "language": "zh_CN", "city": "Shenzhen", "province": "Guangdong", "country": "CN", "headimgurl": "http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0", "privilege": []}Interpretación de parámetros:
| parámetro | describir |
|---|---|
| ferenal | ID único del usuario |
| apodo | Apodo de usuario |
| sexo | El género del usuario, cuando el valor es 1, es masculino, cuando el valor es 2, es femenino, y cuando el valor es 0, se desconoce |
| provincia | Provincias completadas en el perfil de usuario |
| ciudad | La ciudad se completó con la información personal de los usuarios comunes |
| país | País, como China, es CN |
| titular | Avatar del usuario, el último valor representa el tamaño del avatar cuadrado (hay 0, 46, 64, 96 y 132 valores son opcionales, y 0 representa 640*640 avatar cuadrado). Este elemento está vacío cuando el usuario no tiene avatar. |
| privilegio | Información de privilegio del usuario, matriz JSON, como el usuario de WeChat Woka (Chinaunicom) |
Esto es consistente con mi información personal de WeChat
En este punto, sin ingresar a mi cuenta y contraseña, la cuenta pública de WeChat Jinbao obtuvo mi información personal, incluido mi apodo, género, país, provincia, ciudad, avatar personal y lista de privilegios.
Se completa una certificación OAuth2 completa.
3. Demostración detallada
Siga el estudio Fangbei (consulte el código QR a continuación), responda "Autorización", regrese al Mensaje de Graphic and Text, haga clic en la imagen
En la página de confirmación, haga clic en "Permitir"
Aparece el resultado obtenido (la imagen está sujeta al procesamiento antirrobo, por lo que no se puede mostrar directamente, puede descargarla localmente y mostrarla)
Lo anterior trata sobre la información sobre el desarrollo web de la autorización de WeChat para obtener información básica del usuario, la autorización web para obtener información del usuario y la información relevante se agregará en el futuro. ¡Gracias por su apoyo del nuevo canal de tecnología!