【发布时间】:2014-04-23 10:05:19
【问题描述】:
感觉这可能是一个愚蠢的问题,但在寻找可能性和玩弄价值一段时间后,我似乎仍然无法弄清楚如何做到这一点。
我基本上想做的是从 Rockstar Games Social Club 获取帐户信息。我发现这个网站使用了私有 API。但为了使其工作,它需要与服务器的活动会话。
没有身份验证,API 返回:
{"Portfolio":[{"CharacterName":"Michael","TotalShares":0,"TotalInvested":"$0","DayRange":"N/A","ChangePercent":"N/A","ChangeDollar":"N/A","ChangeDirection":"","Investments":[]},{"CharacterName":"Franklin","TotalShares":0,"TotalInvested":"$0","DayRange":"N/A","ChangePercent":"N/A","ChangeDollar":"N/A","ChangeDirection":"","Investments":[]},{"CharacterName":"Trevor","TotalShares":0,"TotalInvested":"$0","DayRange":"N/A","ChangePercent":"N/A","ChangeDollar":"N/A","ChangeDirection":"","Investments":[]}]}
所以,我正在尝试找到一种方法来完成这项工作。而且我似乎 cURL 将是做到这一点的最佳方式。
但是,我测试过的代码会将我重定向到他们的网站,而不是获取数据,之后我可以调用一个新请求,希望它会起作用。
我的 PHP 代码:
class DownloadJSON {
public function download($url) {
return file_get_contents($url);
}
public function login($url, $username, $password) {
$url = "https://socialclub.rockstargames.com/profile/signin";
$vars = "login-field=". $username ."&password-field=". $password . "&rememberme-field=off";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
$data = curl_exec($ch);
$me = $this->download($url);
curl_close($ch);
echo $me;
}
}
if(isset($_GET['url'])) {
if (strlen($_GET['url']) > 0) {
if ($_GET['action'] == "stocks") {
$downloadJSON = new DownloadJSON();
echo $downloadJSON->download($_GET['url']);
}
else if ($_GET['action'] == "portfolio"){
$downloadJSON = new DownloadJSON();
echo $downloadJSON->login($_GET['url'], $_GET['username'], $_GET['password']);
}
else {
echo json_encode("invalid request");
}
}
}
此致, 拉西1
【问题讨论】: