TP5 soporte para aprender punto com api


  = $ AppKey protegido '';
  protected $ appsecret = '';
  protected $ Servicio = ''; // utilizar la dirección de servicio
  protegida oauthServerUrl $ = ''; // dirección autorizado
  protegida notifyUrl $ = 'http: // cs. . ***** com / index / índice / notificar '; // dirección de devolución de llamada


  
  // Obtener el primer código, el código de cambio y luego usar OpenID 

índice de función pública ()
{
import ( 'aes.Aes', EXTEND_PATH); // clase introdujo AES (más adelante en este documento se adjunta)
$ = new nueva AES \ Aes ($ del este -> appsecret);
. $ = tiempo () "000"; // Ciencia punto com requisitos deben estar en milisegundos, por lo que empalma directamente a los tres 0 (bruta)
$ $ AES ENCRYPTED => el cifrar ($ Tiempo ); // uso BCE-128-PKCS5 estará acompañado por el cifrado AES de detrás de la clase, se puede utilizar: http://tool.chacuo.net/cryptaes este sitio cifrado de verificación es correcta, que es ser capaz de des-encriptado, y UTF-8-salida de base 64
// MD5 parámetros: aquí también hay un parámetro: openid, es opcional, y si ya tiene esta openid, saltará directamente palabras, ya no ser autorizado
$ params = array (
"client_id" = > $ this-> AppKey,
"TimeSpan" => $ cifrado,
"redirect_uri" => $ this-> notifyUrl,
"servicio"=> $ this-> oauthServerUrl,
);

$ Params [ "firma"] = $ this-> createSign (el params $, $ this-> appsecret); // MD5 reglas: ascii para parámetros clave ascendente formación, el valor del parámetro de empalme entonces drenado, la última pelea en appSecret, por MD5, teniendo 32 en minúsculas. Después de unir método
        Datos http_build_query = $ ($ params); . $ URL = $ this-> oauthServerUrl "/ OAuth2 / la autorizan?";         $ URL = "&" $ de datos; ..         $ this-> redirect (URL $, 302); / los métodos de redireccionamiento / TP5 de     } en este punto, se saltarán para aprender punto com inicio de sesión página, la autorización de inicio de sesión. El inicio de sesión de usuario terminado, código de retorno a la notifyUrl, si no salta, será un mensaje de error correspondiente 






  
  

 


  Ejemplos para el éxito:

  { "Señal_acceso": "VEdULTI2Ny1WdXRv ************************* MS56eHhrLmNvbSM4MDg =", "expira": 7200}


  El fracaso no es realmente entender lo que ...........

  
  función pública notificar () 
{
$ PARAM = $ this-> request-> parámetro ();
if (empty ($ param)) {
return false;
}

$ Uid = 1;
$ params = array (
"client_id" => $ this-> appKey,
"redirect_uri" => $ this-> notifyUrl,
"código" => $ PARAM [ "código"],
);
$ params [ "firma"] = $ this-> createSign ($ params, $ this-> appSecret);

$ url = $ this-> oauthServerUrl "/ OAuth2 / accessToken?".;
$ data = http_build_query ($ params);
$ url. = "&". $ data;
$ rs = $ this-> getHtml ($ url,

If (isset ($ rs [ "error"])) {
// escribir un registro de errores aquí la mejor
falsa retorno;
}
// Después de obtener la openid, preferentemente con destino a la UID, dijo que no sólo cambiará la tecnología , la próxima vez que tenga, es posible saltar directamente a la conexión del servicio, ya no autorizado
Db :: nombre ( "usuario") -> donde ( "id", $ uid) -> setField ( "OpenID", $ rs [ "señal_acceso "]);
volcado ($ rs);
}


  temporalmente sólo para recibirla. Si recuerda el seguimiento, vamos a seguir para la actualización


  
El siguiente método de firma del método y el rizo se unen

 
/ ** 
* Generación de Algoritmo de Firma
* pública @access
* @param array de parámetros de cifrado de datos
* @param string clave en la clave de usuario
* @ return signo de la cuerda de la firma
* /
función protegida createSign ($ data, $ clave)
{
if (! $ Datos ! || $ clave) {
retorno a la falsa;
}
$ = sort_key los array_keys ($ data);
// Ordenar
Ordenar ($ sort_key);
$ cadena = "";
// empalme
del foreach (AS sort_key $ $ V) {
$ STR. $ datos = [$ V];
}
// empalme Key
$ = STR $ Key ;.
// el MD5 cifrada
$ = MD5 STR (STR $);
return $ STR;
}

  
  // rizo 

protegida función getHtml ($ url, $ data = '')
{
$ rizo = curl_init ();
curl_setopt ($ rizo, CURLOPT_URL, $ url);
curl_setopt ($ rizo, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ rizo, CURLOPT_POST, 1);
curl_setopt ($ rizo, CURLOPT_POSTFIELDS, $ data);
$ data = curl_exec ($ rizo);
// ob_end_clean ();
curl_close ($ rizo);
$ volver datos;
}



  
Se adjunta a continuación la clase AES



  ruta del archivo TP5:
 

 

 
<? PHP 


clase de Aes
{
/ **
* var método de cifrado cadena $ Método, () obtenido por openssl_get_cipher_methods
* /
protected $ Método;

/ **
* cadena var $ cifrado de clave secret_key y descifrado
* /
protected $ SECRET_KEY;

/ **
* cadena var $ iv cifrado y descifrado del vector, es necesario establecer algunos métodos tales como CBC
* /
protected $ IV;

/ **
* cadena var $ Opciones (no sé cómo explicarlo, no hay problema en la actualidad se establece en 0)
* /
protected $ Opciones ;

/ **
* constructor
*
* @param string $ tecla
* @param string $ método de encriptación
* @param string $ IV IV del vector
* @param $ opciones mixtas no está claro
*
* /
Función pública del __construct (Clave $, $ Método = 'AES-128 una BCE', IV = $ '', $ opciones = 0)
{
// Key es necesario establecer
$ this-> secret_key = isset ($ clave ?) $ clave: 'Morefun';

$ this-> = $ método de método;

$ this-> IV IV = $;

$ this-> = $ Opciones Opciones;
}

/ **
* métodos de cifrado para cifrar los datos, devoluciones datos cifrados
*
* @param de datos String $ encryptStr a ser encriptados
*
* @return cadena
*
* /
public function el cifrar ($ encryptStr) {
$ localIV = $ this-> IV;
$ encryptkey = $ this-> SECRET_KEY;

/ / módulo abierto
$ module = mcrypt_module_open (MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, $ localIV);

mcrypt_generic_init ($ módulo, encryptkey $, $ localIV);

// Relleno
$ bloque = mcrypt_get_block_size (MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$ almohadilla = $ bloquear - (strlen ($ encryptStr)% block $); // Calcular el número de caracteres necesario para rellenar
$ encryptStr = str_repeat (CHR ($ pad), $ pad).; // Después de la almohadilla, la longitud str debe ser igual para bloquear o sus múltiplos enteros

// cifrar
$ cifrada = mcrypt_generic ($ módulo, $ encryptStr);

// Cerrar
mcrypt_generic_deinit ($ módulo);
mcrypt_module_close ($ módulo);

base64_encode retorno ($ cifrado);

}

/ **
* Método de descifrado de descifrado de datos, los datos devuelve el descifrado
*
* @param de datos String $ encryptStr a ser descifrados
*
* @return Cadena
*
* /
public function el descifrado ($ encryptStr) {
$ descifrado = MCRYPT_DECRYPT (MCRYPT_RIJNDAEL_128 , $ this-> SECRET_KEY, base64_decode ($ encryptStr), MCRYPT_MODE_ECB);
$ dec_s = strlen ($ descifrado);
$ relleno de la ord = ($ descifrado [$ -dec_s 1.]);
$ descifrado = substr ($ descifrado, 0, - $ relleno);

return $ descifrado;
}
}


Supongo que te gusta

Origin www.cnblogs.com/j-jian/p/12667446.html
Recomendado
Clasificación