出于我的项目目的,我需要远程登录我的Facebook帐户并从那里检索一些信息。出于登录目的,我正在使用PHP的cURL库。在执行代码时,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);
?>
答案 0 :(得分:4)
要使用curl的cookie,您需要指定一个“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()
函数可以做到这一点。这与您发布的问题无关。