Cara menghasilkan tanda tangan yang benar (SIG) di API OK.RU. Kami bekerja dengan kesalahan 104

Belum lama ini saya mengalami kesulitan. Saya tidak berhasil membuat SIG yang benar (kesalahan 104) ketika saya meminta API di OK.RU (teman sekelas). Ternyata, saya bukan satu-satunya, resep yang ditawarkan di jaringan tidak bekerja dengan baik (saya memeriksa banyak menggunakan metode poke). Sebenarnya mereka bekerja, saya hanya tidak mengerti bagaimana membangun permintaan yang benar dengan benar, sehingga SIG juga benar.

Secara khusus, pos ini didedikasikan khusus untuk kesalahan 104 OK.RU API.

PARAM_SIGNATURE 104   

Di bawah ini adalah kode sederhana untuk mendapatkan daftar album. Kode ini sedikit kruk (saya menulis kelas yang tepat untuk diri saya sendiri, tetapi spesifik dan tidak terlalu berguna bagi siapa pun), tetapi ini menjelaskan esensinya, dan banyak programmer pemula dapat membuat kelas mereka sendiri berdasarkan contoh.

 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); } 

Tetapi agar ini berfungsi, Anda membutuhkan $ paramsArray yang benar, jika tidak Anda akan menyelesaikan kesalahan 104, tetapi dapatkan yang lain. Banyak programmer pemula mungkin akan mengabaikan upaya OK.RU untuk membantu pengembang.

Jadi, ikuti tautan https://apiok.ru/dev/methods/ .

Kami menemukan formulir ini:



Kami mengisi data yang diperlukan dan mendapatkan instruksi yang sudah jadi, dan kami menguji permintaan kami.

Semoga artikel ini bermanfaat.

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


All Articles