كيفية إنشاء التوقيع الصحيح (SIG) في OK.RU API. نحن نعمل مع خطأ 104

منذ وقت ليس ببعيد واجهت صعوبة. لم ينجح في إنشاء SIG الصحيح (خطأ 104) عندما طلبت API في OK.RU (زملاء الدراسة). كما اتضح ، لم أكن الوصفة الوحيدة ، لم تكن الوصفات المقدمة على الشبكة تعمل جيدًا (لقد راجعت العديد باستخدام الطريقة العشوائية). في الواقع لقد عملوا ، لم أفهم فقط كيفية إنشاء الاستعلام الصحيح بشكل صحيح ، بحيث كانت SIG صحيحة أيضًا.

على وجه التحديد ، هذا المنشور مخصص بشكل خاص للخطأ 104 OK.RU API.

PARAM_SIGNATURE 104   

يوجد أدناه رمز بسيط للحصول على قائمة بالألبومات. الكود عبارة عن عكاز صغير (كتبت الفصل المناسب لنفسي ، لكنها محددة وليست مفيدة جدًا لأي شخص) ، لكنها تصف الجوهر ، ويمكن للعديد من المبرمجين المبتدئين إنشاء فصلهم الخاص بهم استنادًا إلى مثال.

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

ولكن لكي يعمل هذا ، فأنت تحتاج إلى $ paramsArray الصحيح ، وإلا فسوف تحل الخطأ 104 ، لكن تحصل على أخرى. من المحتمل أن يتجاهل العديد من المبرمجين الأساسيين جهود OK.RU لمساعدة المطورين.

لذلك ، اتبع الرابط https://apiok.ru/dev/methods/ .

نجد هذا النموذج:



نحن نملأ البيانات اللازمة ونحصل بشكل أساسي على تعليمات جاهزة ، وبالإضافة إلى ذلك نقوم باختبار طلبنا.

آمل أن المقالة كانت مفيدة.

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


All Articles