2014-05-14 45 views
0

我想弄清楚如何发布像Instagram的。点击此处查看我的网站以测试此API。Instagram Like API。通过卷曲和php发布一个像

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']; 

类似按钮被点击后,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']; 

我已经测试了我能够获得令牌,迄今为止这么好,然后下一部分不起作用,我只是在尝试我的运气,因为我不熟悉curl,并且没有来自谷歌搜索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); 

} 
+0

你'print_r()'out'$ result'(你的代码的最后一个片段)?它应该给你一个明确的信息或错误的错误! –

+0

@AdamAzad是的,没有显示。 –

+0

@JianShort你正在使用的media_id是什么? –

回答

0

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

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