Для моей цели проекта мне нужно войти в мою учетную запись на facebook удаленно и получить некоторую информацию оттуда. Для цели входа я использую cURL-библиотеку PHP. При выполнении кода страница facebook просит меня включить файлы cookie в моем браузере, которые я уже включил. Есть ли проблемы с кодом? Может ли кто-нибудь помочь мне войти в мою учетную запись удаленно? Я новичок, и я был бы очень признателен за помощь. Вот код
<?php //create array of data to be posted $post_data['email'] = '*********'; $post_data['password'] = '**********'; $post_data['action'] = 'login'; //traverse array and prepare data for posting foreach ( $post_data as $key => $value) { $post_items[] = $key . '=' . $value; } //create the final string to be posted using implode() $post_string = implode ('&', $post_items); //create cURL connection $ch = curl_init('https://login.facebook.com/login.php?'); //set options curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //set data to be posted curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); //perform our request $result = curl_exec($ch); print_r($result); //close the connection curl_close($ch); ?>
Чтобы использовать файлы cookie с curl, вам нужно указать «cookie jar», в котором должны храниться и загружаться файлы cookie. Вы можете сделать это, используя CURLOPT_COOKIEFILE
и CURLOPT_COOKIEJAR
. Что-то вроде этого должно это сделать:
curl_setopt($ch, CURLOPT_COOKIEJAR, 'facebook_cookies.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'facebook_cookies.txt');
Ознакомьтесь с http://php.net/curl_setopt для получения дополнительной информации.
Как и в стороне, вы также можете передать $post_fields
как массив в CURLOPT_POSTFIELDS
, так что вам фактически не нужно генерировать строку запроса самостоятельно. Если вы хотите это сделать, есть и http_build_query()
которая делает это. Это не связано с проблемой, которую вы опубликовали.