Cómo obtener información del usuario en el subprograma WeChat
Por ejemplo, en un navegador, podemos obtener el objeto DOM de la página a través de document.getElementById. Sin embargo, en el subprograma WeChat, no se puede obtener el objeto DOM. Document.getElementById() informa directamente el error getElementById no funciona. Yo también estaba borracho. Muchas funciones interesantes no serían posibles sin este soporte.
De todos modos, déjame hablar sobre mis sentimientos acerca de obtener información del usuario.
Existen dos opciones para obtener información del usuario.
1. Un objeto json sin información confidencial openId (incluida información básica como apodo, avatarUrl, etc.)
2. Contiene información básica de información confidencial openId.
La primera solución de adquisición
1. Primero llame a la interfaz wx.login() para permitir la verificación de la autorización del usuario, es decir, hemos observado a simple vista si ha autorizado xxxxx. .
2. Una vez que la autorización del usuario sea exitosa, llame a la interfaz wx.getUserInfo() para obtener información del usuario.
El código completo es el siguiente
wx.login({
Éxito: function(){
wx.getUserInfo({ p>
Éxito: función (res){
var simpleUser = res.userInfo
console.log(usuario simple.nickname);
}
});
}
});
El segundo es más complicado y requiere interacción con el fondo para obtener userInfo, pero los datos obtenidos por esta solución están completos (incluido openId).
1. Llame a la interfaz wx.login() para autorizar que el código se incluya en los parámetros de la función de éxito.
2. Llame a la interfaz wx.getUserInfo(). La función de éxito contiene datos cifrados y iv.
3. Pase los parámetros anteriores a un segundo plano para su análisis y genere información de usuario.
El código es el siguiente
Investigación de flujo de Jet...
var request = require("../../utils/request . js " );
p>
wx.login({
Éxito: función(res_login){
if(res_login.code)
{
wx.getUserInfo({
withCredentials:true,
Éxito: función(res_user){
solicitud var URL = "/getuser API/XXX . PHP ";
var jsonData = {
código:res_login.code,
datos cifrados:RES_user.datos cifrados
Cuatro: res_user.iv
};
Solicitud.
/sns/jscode2session? appid = { $this->wx config['appid']} && secret = {$this->wx config['app secret']} &&js_code = {$code}& ampgrant_type = autorizado_code";
$datos API = JSON_decode(curlHttp($API URL,true),true);
if (!isset($apiData ['session_key']))
{
echoJson(array(
" code " = >; 102,
" msg " => "error de curvatura"
) , verdadero);
}
$ userInfo = get userInfo($ this-> wxConfig[' appid'], $apiData['session_key'], $encryptedData, $iv );
if (!$userInfo)
{
echoJson(array (
" código " =>105, p>
" msg" =>"La información del usuario no es"
));
}
//$ userInfo = JSON_decode($ userInfo , verdadero);
//Cargar servicio de usuario
//$ userService = cargar _ service("Usuario");
//$ userService-> ;check user($this->projectId,$userInfo);
echo $userInfo//WeChat respondió a datos json
}
Función GetUserInfo. , wxBizDataCrypt.php es el paquete de material oficial proporcionado por WeChat.
La función curlHttp es una función personalizada. El código fuente de esta función se puede encontrar en mi artículo CurlHttp. //Obtener información del fan
Función getUserInfo($appid, $sessionKey, $encryptedData, $iv){
require_once ruta raíz.
"/extends/wx user/wxbizdatacrypt .PHP ";
$ datos = matriz();
$pc = nuevo WXBizDataCrypt($appid, $clave de sesión);
$errCode = $PC-> decryptData($encryptedData, $iv, $data);
if ($errCode == 0) {
devuelve $ datos
} De lo contrario, {
return false
}
}
Escribí mi propia solicitud de gadget .js
var app = getApp();
//Solicitud remota
var _ _