Comment générer la signature correcte (SIG) dans l'API OK.RU. Nous travaillons avec une erreur 104

Il n'y a pas si longtemps, j'ai rencontré des difficultés. Je n'ai pas réussi à créer le SIG correct (erreur 104) lorsque j'ai demandé l'API dans OK.RU (camarades de classe). Il s'est avéré que je n'étais pas le seul, les recettes proposées sur le réseau ne fonctionnaient pas très bien (j'en ai vérifié beaucoup en utilisant la méthode aléatoire). En fait, ils ont fonctionné, je ne comprenais tout simplement pas comment créer correctement la bonne requête, de sorte que SIG était également correct.

Plus précisément, ce message est dédié spécifiquement à l'erreur 104 OK.RU API.

PARAM_SIGNATURE 104   

Voici un code simple pour obtenir une liste d'albums. Le code est un peu béquille (j'ai écrit la bonne classe pour moi, mais elle est spécifique et pas très utile à personne), mais elle décrit l'essentiel, et de nombreux programmeurs novices peuvent créer leur propre classe sur la base d'un exemple.

 protected $params = array( 'application_id' => '5*******6', 'application_key' => 'C***********A', 'session_secret_key' => '*************0' ); protected $apiUrl = 'https://api.ok.ru/fb.do?'; public function getalbums( Request $request ) { //access_token        . $userok = Userok::where('useroks.user_id', '=', $request->user_id)->first(); $paramsArray = array( 'application_key' => $this->params['application_key'], 'format' => 'json', 'method' => 'photos.getAlbums', ); ksort($paramsArray); foreach($paramsArray as $k=>$v) { $paramsStr .= $k . "=" . $v; } /***    .   ,     (    ). $sig = strtolower( md5( $paramsStr) . md5( $userok->access_token .$this->params['session_secret_key'] ) ); **/ $sectret_key = md5($userok->access_token.$this->params['session_secret_key']); $sig = md5($paramsStr.$sectret_key); $paramsArray['sig'] = $sig; $paramsArray['access_token'] = $userok->access_token; return $this->sendRequest( $this->apiUrl, $paramsArray, 'POST' ); } protected function sendRequest($url = '', $params = array(), $method = 'POST') { if(is_array($params)) { $params = http_build_query($params); } $ch = curl_init(); if($method == 'GET') { $url .= $params; } else if($method == 'POST') { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($ch); curl_close($ch); return json_decode($result, true); } 

Mais pour que cela fonctionne, vous avez besoin du bon $ paramsArray, sinon vous résoudrez la 104ème erreur, mais obtenez-en une autre. De nombreux programmeurs débutants ignoreront probablement les efforts de OK.RU pour aider les développeurs.

Alors, suivez le lien https://apiok.ru/dev/methods/ .

On retrouve ce formulaire:



Nous remplissons les données nécessaires et obtenons essentiellement une instruction toute faite, et en plus nous testons notre demande.

J'espère que l'article vous a été utile.

Source: https://habr.com/ru/post/fr468315/


All Articles