Red de Respuestas Legales - Consulta de información - Cómo obtener información del usuario en el subprograma WeChat

Cómo obtener información del usuario en el subprograma WeChat

Recientemente he estado estudiando cómo reproducir miniprogramas de WeChat. Después de contactarlo, encontré muchos obstáculos.

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({

É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,

" 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 _ _