View Single Post
  #4  
Old 04-15-2020, 12:28 PM
shka shka is offline
 
Join Date: Mar 2016
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yepp, api docs are really bad. Solution is the security token getting by login call.
Following example works in my local xammp dev enviroment. I've used loginSpecificUser but also login2 is possible. After login fetchCurrentUserinfo and get username (to check if correct login) and securitytoken.

After that an example for adding an post and adding a user.

You need to change apikey, urlapibase, userid and password for userid

PHP Code:
<?php

$requestparams 
= array(
'api_m' => 'api.init',
'clientname' => 'Muschebuhbuh',
'clientversion' => '1.0',
'platformname' => 'Muschebuhbuh',
'platformversion' => '1.0',
'uniqueid' => 'test123'
);

$urlapibase 'http://localhost/forum/api.php'//replace with your url, but don't use .../core/api.php

// cURL
$url $urlapibase;
$ch curl_init($url);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($requestparams));
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
$curl_response curl_exec($ch);
curl_close($ch);

$curl_response_array json_decode($curl_responsetrue);
// API
$apiaccesstoken $curl_response_array['apiaccesstoken'];
$apiclientid $curl_response_array['apiclientid'];
$apisecret $curl_response_array['secret'];
$apiversion $curl_response_array['apiversion'];

$apikey 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'//replace with your generated api key from admincp
echo '-------------- first init -----------------';
echo 
'apiaccesstoken : ';
var_dump($apiaccesstoken);
//echo 'curl_response_array : ';
//var_dump($curl_response_array2);


// you can use also user.login or user.login2, but with other params
$requestparams = array(
    
'api_m' => 'user.loginSpecificUser',
    
'userid' => 1,                      // change userid for login
    
'passwords' => array(
        
'password' => 'xxxxxxx',       // password for userid
        
'md5password' => md5('xxxxx'),  //same password
        
'md5password_utf' => ''
    
),
    
'extraAuthInfo' => array(
        
'mfa_authcode' => ""
    
),
    
'logintype' => 'cplogin'
);
ksort($requestparams);
$requestparams_string http_build_query($requestparams);
$url $urlapibase.'?'.$requestparams_string;
$apisignature md5($requestparams_string.$apiaccesstoken.$apiclientid.$apisecret.$apikey);

$requestparams['api_s'] = $apiaccesstoken;
$requestparams['api_sig'] = $apisignature;
$requestparams['api_v'] = $apiversion;
$requestparams['api_c'] = $apiclientid;

// cURL
define("COOKIE_FILE""cookie.txt");

$ch curl_init($url);
curl_setopt($chCURLOPT_COOKIEJARCOOKIE_FILE);
curl_setopt($chCURLOPT_COOKIEFILECOOKIE_FILE);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($requestparams));
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
$curl_response curl_exec($ch);
$curl_response_array json_decode($curl_responsetrue);
curl_close($ch);


$remember_me $curl_response_array['password'];
$sessionhash $curl_response_array['sessionhash'];
$cpsession $curl_response_array['cpsession'];

echo 
'-------------- login user -----------------';
echo 
'curl_response_array : ';
var_dump($curl_response_array);
// echo 'remember_me : ';
// var_dump($remember_me);
// echo 'sessionhash : ';
// var_dump($sessionhash);
// echo 'cpsession : ';
// var_dump($cpsession);



// fetch User Info
$requestparams = array(
    
'api_m' => 'user.fetchCurrentUserinfo'
);
ksort($requestparams);
$url =  $urlapibase.'?'.http_build_query($requestparams);
$requestparams_string http_build_query($requestparams);
$apisignature md5($requestparams_string.$apiaccesstoken.$apiclientid.$apisecret.$apikey);

$requestparams['api_s'] = $apiaccesstoken;
$requestparams['api_sig'] = $apisignature;
$requestparams['api_v'] = $apiversion;
$requestparams['api_c'] = $apiclientid;


// cURL
$ch curl_init($url);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($requestparams));
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLINFO_HEADER_OUTtrue);
$curl_response curl_exec($ch);
$information curl_getinfo($ch);
curl_close($ch);

$curl_response_array json_decode($curl_responsetrue);
echo 
'--------------- fetch user info ----------------';
//echo 'header information : ';
//var_dump($information);
//echo 'curl_response_array : ';
//var_dump($curl_response_array);
echo 'username : (should be the logged in username)';
var_dump($curl_response_array['username']);
echo 
'securitytoken : ';
var_dump($curl_response_array['securitytoken']);

$securitytoken $curl_response_array['securitytoken'];



// Content add
$requestparams = array(
    
'api_m' => 'content_text.add',
    
'data' => array(
        
'rawtext' => "Content for Content_Title 14",
        
'title' => "Content_Title 14",
        
'parentid' => 3,
        
'userid' => 1
    
),
    
'options' => array()
);

ksort($requestparams);
$url =  $urlapibase.'?'.http_build_query($requestparams);
$requestparams_string http_build_query($requestparams);
$apisignature md5($requestparams_string.$apiaccesstoken.$apiclientid.$apisecret.$apikey);

$requestparams['api_s'] = $apiaccesstoken;
$requestparams['api_sig'] = $apisignature;
$requestparams['api_v'] = $apiversion;
$requestparams['api_c'] = $apiclientid;
$requestparams['securitytoken'] = $securitytoken;

// cURL
$ch curl_init($url);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($requestparams));
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLINFO_HEADER_OUTtrue);
$curl_response curl_exec($ch);
$information curl_getinfo($ch);
curl_close($ch);

$curl_response_array json_decode($curl_responsetrue);
echo 
'------------ content add -------------------';
//echo 'header information : ';
//var_dump($information);
echo 'curl_response_array : ';
var_dump($curl_response_array);



// User
$user = array(
    
'username' => "Test4",
    
'email' => "test4@test.com",
    
'usergroupid' => "2"
);

ksort($user);
$requestparams = array(
    
'api_m' => 'user.save',
    
'userid' => '0',
    
'password' => '123',
    
'user' => $user,
    
'options' => '',
    
'adminoptions' => '',
    
'userfield' => ''
);
ksort($requestparams);
$url =  $urlapibase.'?'.http_build_query($requestparams);
$requestparams_string http_build_query($requestparams);
$apisignature md5($requestparams_string.$apiaccesstoken.$apiclientid.$apisecret.$apikey);

$requestparams['api_s'] = $apiaccesstoken;
$requestparams['api_sig'] = $apisignature;
$requestparams['api_v'] = $apiversion;
$requestparams['api_c'] = $apiclientid;
$requestparams['securitytoken'] = $securitytoken;

// cURL
$ch curl_init($url);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($requestparams));
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLINFO_HEADER_OUTtrue);
$curl_response curl_exec($ch);
$information curl_getinfo($ch);
curl_close($ch);

$curl_response_array json_decode($curl_responsetrue);
echo 
'------------ add user -------------------';
//echo 'header information : ';
//var_dump($information);
echo 'curl_response_array : ';
var_dump($curl_response_array);
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01415 seconds
  • Memory Usage 1,909KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete