Instagram喜欢API。通过curl和php发布一个类似的东西

时间:2014-05-14 01:53:03

标签: api curl instagram

我想弄清楚如何为Instagram发布一个类似的东西。点击此处查看我的网站以测试此API。

http://ewands.no-ip.biz/Intern/guangjian/instagram/

这是我第一次尝试使用Instagram API。谷歌它,但没有关于这个主题的教程。下面是我的PHP代码。

获取媒体ID:

$api = file_get_contents("http://api.instagram.com/oembed?url=http://instagram.com/p/n5DyHnKWoo");      
$apiObj = json_decode($api,true);      
$media_id = $apiObj['media_id'];

单击like按钮后,URL变为http://ewands.no-ip.biz/Intern/guangjian/instagram?api=like,因此从PHP开始运行以下代码:

if($_GET['api'] == 'like'){

header('location:https://api.instagram.com/oauth/authorize/?client_id=3548d38f15b54dbfb744bf0705fa8198&redirect_uri=http://ewands.no-ip.biz/intern/guangjian/instagram?function=like&response_type=code');

以上将页面重定向到http://ewands.no-ip.biz/intern/guangjian/instagram/?function=like&code=3b50fdbcd0184f979b31f5b0d12354c4< - Instagram服务器添加了随机代码,接下来,使用curl获取访问令牌:

} 
if($_GET['function'] == 'like') {

    $code = $_GET['code'];
    $url = "https://api.instagram.com/oauth/access_token";
    $access_token_parameters = array(
        'client_id'                =>     '3548d38f15b54dbfb744bf0705fa8198',
        'client_secret'            =>     '97e12a30416d4436a52107d0d1820e91',
        'grant_type'               =>     'authorization_code',
        'redirect_uri'             =>     'http://ewands.no-ip.biz/intern/guangjian/instagram?function=like', 
        'code'                     =>     $code
        );
    $curl = curl_init($url);  
    curl_setopt($curl,CURLOPT_POST,true);   
    curl_setopt($curl,CURLOPT_POSTFIELDS,$access_token_parameters);   
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  
    $result = curl_exec($curl);   
    curl_close($curl); 

    $arr = json_decode($result,true);
    $token = $arr['access_token'];

我已经测试过我能够获得令牌,到目前为止一直很好,然后下一部分不起作用,我只是试着运气,因为我不熟悉卷曲而且没有教程从那里谷歌搜索Instagram API教程。

    $url = 'https://api.instagram.com/v1/media/'.$media_id.'/likes';

    $curl = curl_init($url);
    curl_setopt($curl,CURLOPT_POST,true);
    curl_setopt($curl,CURLOPT_POSTFIELDS,'access_token='.$token);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $result = curl_exec($curl);

}

1 个答案:

答案 0 :(得分:0)

Instagram在令牌返回中返回一个#,这使得$ _GET无效。 该令牌仅应该使用一个。 您可以从URI手动复制它,然后在代码中相应地使用它。

这是非常不安全的。 你在想它。