API_KEY, "api_sig" => $signature, "token" => $token ); curl_setopt($ch, CURLOPT_URL,API_URL."&method=auth.getSession"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLINFO_HEADER_OUT, true); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if (curl_errno($ch)){ echo 'CURL Error: '. curl_error($ch); } curl_close($ch); $response = json_decode($response, true); // Append our other important values to successful signings if (!$response['error']){ $response['api_key'] = API_KEY; } return $response; } /** * Perform a signed request * * @param $data = array * @param $include_signatore = boolean **/ function signRequest($data = array(), $include_signature = true){ unset($data['action']); // Make sure we've got our API key included $request = array_merge(array("api_key" => API_KEY), $data); // Drop jQuery callback argument unset($request["_"]); // Loop all the values in our request and add to our signature $signature = ""; $params = ""; ksort($request); foreach ($request as $key => $value){ $signature.= $key.$value; if ($params != ""){ $params.= "&"; } $params.= $key."=".$value; } // Finalize the signature $signature.= API_SECRET; $signature = md5($signature); $request["api_sig"] = $signature; // Add finalised params as a complete string $params.= "&api_sig=".$signature; $request["params"] = $params; return $request; }