Войдите в Zoho CRM с помощью http-вызова

Я пытаюсь автоматизировать вход в Zoho CRM. Я пытаюсь войти, используя мои данные в вызове http, но похоже, что это не работает. Я хотел бы знать, достиг ли кто-нибудь этого.

Что я пробовал:

POST на https://accounts.zoho.com/login

с телом:

{
 LOGIN_ID: "username", 
PASSWORD: "password", 
IS_AJAX: "true", 
remember :-1,  
servicename: "ZohoCRM"
}

Ответ я получаю: Статус 200

showErrorAndReload('Please\x20reload\x20the\x20page\x20and\x20try\x20again.');

1 ответ

Я сделал сценарий Php на основе ответа Кристиана Барахона:

  1. Получить сессионный cookie
$useragent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36';
$cookie_file_path = 'cookie.txt';

$curl = curl_init('https://accounts.zoho.com/signin?servicename=AaaServer&serviceurl=%2Fu%2Fh/');
curl_setopt($curl, CURLOPT_USERAGENT, $useragent); 
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($curl, CURLOPT_COOKIEJAR,
$cookie_file_path);

curl_exec($curl);
  1. Авторизоваться
//Read cookies file
$cookies = curl_getinfo($curl, CURLINFO_COOKIELIST); 
foreach ($cookies as $cookie){
    $splitted=preg_split('/\s+/',$cookie);
    if($splitted[0]=="accounts.zoho.com"){
        if($splitted[sizeof($splitted)-2]=="iamcsr"){
            $iamscr=$splitted[sizeof($splitted)-1];
        }
    } 
} 
//return current unix timestamp in milliseconds
function milliseconds() {
    $mt = explode(' ', microtime());
    return ((int)$mt[1]) * 1000 + ((int)round($mt[0] * 1000)); 
} 

$postValues = array(
    'LOGIN_ID' => '*******',
    'PASSWORD' => '*******',
    'cli_time'=> milliseconds(),
    'remember'=> '2592000',
    'iamcsrcoo'=> $iamscr,
    'servicename'=> 'AaaServer',
    'serviceurl'=> 'https://accounts.zoho.com/u/h' 
);
$postValuesFormatted = http_build_query($postValues);

curl_setopt($curl, CURLOPT_URL, 'https://accounts.zoho.com/signin/auth'); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $postValuesFormatted); 
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file_path);

curl_exec($curl);
  1. Скручивание любой страницы во время входа
curl_setopt($curl, CURLOPT_URL, 'https://accounts.zoho.com/u/h');
curl_setopt($curl, CURLOPT_POST, false);
$result = curl_exec($curl);

Я только недавно должен был сделать много исследований и проб и ошибок, чтобы понять это. Обязательно используйте Postman или что-то еще, чтобы проверить это для своего приложения.

  1. Получить iamcsr значение из куки, которую вы получаете, посетив https://accounts.zoho.com/

    Вот как выглядит значение

    Примечание. Вы не можете повторно использовать или жестко задавать это значение. Ваше приложение должно генерировать его при каждом входе в систему.

  2. Вставьте следующие значения в ссылку ниже и POST Это.

    login_id = ваша учетная запись Zoho

    password = пароль вашей учетной записи Zoho

    unix_timestamp = генерировать текущую метку времени Unix с миллисекундами

    iamcsr = значение, полученное из cookie

    Значения параметров для remember, servicename, а также serviceurl всегда оставайся таким же.

    https://accounts.zoho.com/signin/auth?LOGIN_ID={login_id}&PASSWORD={password}&cli_time={unix_timestamp}&remember=2592000&iamcsrcoo={iamcsr}&servicename=AaaServer&serviceurl=https://accounts.zoho.com/u/

Чтобы убедиться, что вы успешно вошли в систему, вы получите следующий ответ:

showsuccess('https\x3A\x2F\x2Faccounts.zoho.com\x2Fu\x2F',"",'', '', '-1', 'dXM\x3D');

Это позволит вам пройти через часть входа в систему и аутентифицировать вас для дальнейших действий, если в вашем приложении сохранены файлы cookie для текущего сеанса.

Другие вопросы по тегам