Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我使用php curl获取steam用户配置文件,以及如何获取steam徽章图像?_Php_Curl_Steam_Badge - Fatal编程技术网

为什么可以';我使用php curl获取steam用户配置文件,以及如何获取steam徽章图像?

为什么可以';我使用php curl获取steam用户配置文件,以及如何获取steam徽章图像?,php,curl,steam,badge,Php,Curl,Steam,Badge,我目前正在使用php开发一个关于steam的网站,它可以获取用户的个人资料,制作玩家卡等等。我正在使用Steam Web Api来帮助我获得所需的信息。问题是,当我打算获取用户的徽章时,我使用“IPlayerService/GetBadges/v1”api,它返回一个json数据,如下所示: { "response": { "badges": [ { "badgeid": 23, "l

我目前正在使用php开发一个关于steam的网站,它可以获取用户的个人资料,制作玩家卡等等。我正在使用Steam Web Api来帮助我获得所需的信息。问题是,当我打算获取用户的徽章时,我使用“IPlayerService/GetBadges/v1”api,它返回一个json数据,如下所示:

{
    "response": {
        "badges": [
            {
                "badgeid": 23,
                "level": 300,
                "completion_time": 1434209651,
                "xp": 125,
                "scarcity": 0
            },
            {
                "badgeid": 18,
                "level": 15,
                "completion_time": 1404061200,
                "xp": 100,
                "scarcity": 102167
            },
            {
                "badgeid": 2,
                "level": 3,
                "completion_time": 1457872741,
                "xp": 500,
                "scarcity": 1334304
            },
            {
                "badgeid": 13,
                "level": 57,
                "completion_time": 1356099851,
                "xp": 260,
                "scarcity": 5832743
            },
            {
                "badgeid": 1,
                "level": 3,
                "completion_time": 1356099851,
                "xp": 150,
                "scarcity": 76725893
            },
            {
                "badgeid": 1,
                "appid": 231430,
                "level": 3,
                "completion_time": 1455540973,
                "xp": 300,
                "communityitemid": "817099833",
                "border_color": 0,
                "scarcity": 20438
            },
            {
                "badgeid": 1,
                "appid": 24010,
                "level": 1,
                "completion_time": 1403487961,
                "xp": 100,
                "communityitemid": "828384582",
                "border_color": 0,
                "scarcity": 15404
            },
            {
                "badgeid": 1,
                "appid": 35450,
                "level": 1,
                "completion_time": 1403573788,
                "xp": 100,
                "communityitemid": "842044372",
                "border_color": 0,
                "scarcity": 122236
            },
            {
                "badgeid": 1,
                "appid": 63380,
                "level": 1,
                "completion_time": 1403574599,
                "xp": 100,
                "communityitemid": "842169975",
                "border_color": 0,
                "scarcity": 222048
            },
            {
                "badgeid": 1,
                "appid": 303700,
                "level": 1,
                "completion_time": 1403743093,
                "xp": 100,
                "communityitemid": "866824198",
                "border_color": 0,
                "scarcity": 998614
            },
            {
                "badgeid": 17,
                "appid": 335590,
                "level": 1,
                "completion_time": 1420075581,
                "xp": 100,
                "communityitemid": "1438441936",
                "border_color": 0,
                "scarcity": 858393
            },
            {
                "badgeid": 1,
                "appid": 105450,
                "level": 1,
                "completion_time": 1451207235,
                "xp": 100,
                "communityitemid": "2454848086",
                "border_color": 0,
                "scarcity": 49755
            },
            {
                "badgeid": 1,
                "appid": 220200,
                "level": 1,
                "completion_time": 1451207275,
                "xp": 100,
                "communityitemid": "2454853894",
                "border_color": 0,
                "scarcity": 100821
            },
            {
                "badgeid": 2,
                "appid": 425280,
                "level": 3,
                "completion_time": 1451805075,
                "xp": 300,
                "communityitemid": "2483562201",
                "border_color": 0,
                "scarcity": 297565
            },
            {
                "badgeid": 1,
                "appid": 206440,
                "level": 1,
                "completion_time": 1451805331,
                "xp": 100,
                "communityitemid": "2549522337",
                "border_color": 0,
                "scarcity": 43807
            },
            {
                "badgeid": 1,
                "appid": 391220,
                "level": 1,
                "completion_time": 1455372224,
                "xp": 100,
                "communityitemid": "2699515873",
                "border_color": 0,
                "scarcity": 16843
            },
            {
                "badgeid": 1,
                "appid": 287390,
                "level": 1,
                "completion_time": 1457355907,
                "xp": 100,
                "communityitemid": "2764853882",
                "border_color": 0,
                "scarcity": 35158
            }
        ]
        ,
        "player_xp": 2735,
        "player_level": 18,
        "player_xp_needed_to_level_up": 65,
        "player_xp_needed_current_level": 2600
    }
}
这个返回的数据只告诉我关于徽章ID和appid的信息,而没有说明徽章图像的url。我在steam上查看了徽章图像,它的url类似于472be31927c4e77721fcba33bbd04b1331272e7e.png

因此,我无法仅通过appid获取url。 由于steam web api不能满足我的意图,我尝试使用php curl请求steam用户的个人资料页面和徽章页面来获取我需要的信息,我的代码是:

$url='http://steamcommunity.com/profile/76561198078931851';
$postFields='';
$cookie='';
$header=array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*//*;q=0.8', 'Accept-Encoding:gzip, deflate, sdch', 'Accept-Language:zh-CN,zh;q=0.8', 'Cache-Control:max-age=0', 'Connection:keep-alive','Host:steamcommunity.com', 'Upgrade-Insecure-Requests: 1','User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36');

$btch=curl_init($url);

curl_setopt($btch, CURLOPT_FAILONERROR, 0);
curl_setopt($btch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($btch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($btch, CURLOPT_TIMEOUT, 1);
curl_setopt($btch, CURLOPT_ENCODING, 'gzip,deflate,sdch');          //  防止乱码
curl_setopt($btch, CURLOPT_HEADER, 1);
curl_setopt($btch, CURLOPT_COOKIE, $cookie);
curl_setopt($btch, CURLOPT_HTTPHEADER, $header);
curl_setopt($btch, CURLOPT_HTTPGET, 1);

try{       
       $result=curl_exec($btch);
}            
catch(exception $e)  
{              
       echo $e->getMessage();
} 
if(!$result)
{
    echo 'false!';
}
echo '<pre>';
print_r($result);
echo '</pre>';

curl_close($btch);
$url='1!'http://steamcommunity.com/profile/76561198078931851';
$postFields='';
$cookie='';
$header=array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Encoding:gzip,deflate,sdch','Accept-Language:zh-CN,zh;q=0.8','Cache-Control:max-age=0','Connection:keep-alive','Host:steamcommunity.com','Upgrade-unsecurity-Requests:1','User-Agent:Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,像壁虎一样)Chrome/46.0.2490.86 Safari/537.36’;
$btch=curl\u init($url);
curl_setopt($btch,CURLOPT_FAILONERROR,0);
curl_setopt($btch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($btch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($btch,CURLOPT_超时,1);
curl_setopt($btch,CURLOPT_编码,'gzip,deflate,sdch');//防止乱码
curl_setopt($btch,CURLOPT_头,1);
curl_setopt($btch,CURLOPT_COOKIE,$COOKIE);
curl_setopt($btch,CURLOPT_HTTPHEADER,$header);
curl_setopt($btch,CURLOPT_HTTPGET,1);
试试{
$result=curl\u exec($btch);
}            
捕获(例外$e)
{              
echo$e->getMessage();
} 
如果(!$result)
{
回声‘假!’;
}
回声';
打印(结果);
回声';
卷曲关闭($btch);
curl确实有效,但steam从未返回用户的配置文件页面,而是始终将请求重定向到steam社区的主页并要求我登录。因此,我无法继续获取用户配置文件。 我阅读了以下相关问题:
有人知道如何解决这个问题吗?你能给我一些帮助吗?非常感谢

看来我自己找到了解决问题的方法……就用
file\u get\u contents()
代替curl请求steam用户配置文件页面:

看来我自己找到了解决问题的方法……就用
file\u get\u contents()
代替curl请求steam用户配置文件页面:

我想Steam Web API需要用户登录,才能为其配置文件页面提供服务。这听起来并不出乎意料……:)@谢谢你的评论,但也许你误解了我。1当我使用php curl直接请求steam用户配置文件页面(如)时,我被要求登录,而不是当我使用steam web api时。steam web api工作得很好,它不能提供我需要的信息。2当我使用网络浏览器(我尝试了chrome、edge和ie)访问用户配置文件页面时,我没有被要求登录,我仍然可以获得所有内容。我甚至清除了我所有的cookies,以确保我没有登录,并且它仍然有效。这是最令人困惑的部分。对不起,我不知道Steam Web API;我只是想从外面给你一个提示,以为这可能是你的疏忽…:-(@MarcoS没关系:)我在别的地方肯定有失误。再次感谢您的关注和评论!我想Steam Web API需要用户登录,才能为其配置文件页面提供服务。这听起来并不出乎意料……:)@谢谢你的评论,但也许你误解了我。1当我使用php curl直接请求steam用户配置文件页面(如)时,我被要求登录,而不是当我使用steam web api时。steam web api工作得很好,它不能提供我需要的信息。2当我使用网络浏览器(我尝试了chrome、edge和ie)访问用户配置文件页面时,我没有被要求登录,我仍然可以获得所有内容。我甚至清除了我所有的cookies,以确保我没有登录,并且它仍然有效。这是最令人困惑的部分。对不起,我不知道Steam Web API;我只是想从外面给你一个提示,以为这可能是你的疏忽…:-(@MarcoS没关系:)我在别的地方肯定有失误。再次感谢您的关注和评论!