2013-11-23 45 views
2

我有instagram照片的圖像網頁url。現在我想發送這個圖像網頁的URL到Instagram API,並獲得媒體ID和所有者的用戶名。如果圖像是公開的,以下api調用效果很好,但如果圖像是私人的,它會失敗並給我沒有媒體匹配我在哪裏可以找到圖像的Instagram媒體ID(具有訪問令牌和圖片所有者)?

我已經關注了圖片所有者並獲得了令牌給用戶的instagram API。那麼如何讓媒體ID和圖像所有者的名稱具有使用PHP或JavaScript圖像網頁的URL?有沒有其他的API我需要用戶處理私人圖像?

http://api.instagram.com/oembed?url=http://instagram.com/p/xxxx-xxxxx/ 

回答

0

所以這裏有很多折舊的解決方案,所以這裏是我的編輯/解決方案,在這個日期工作。

的Javascript + jQuery的

$.ajax({ 
    type: 'GET', 
    url: 'http://api.instagram.com/oembed?callback=&url='+Url, //You must define 'Url' for yourself 
    cache: false, 
    dataType: 'json', 
    jsonp: false, 
    success: function (data) { 
     try { 
      var MediaID = data.media_id; 
     } catch (err) { 
      console.log(err); 
     } 
    } 
}); 

所以這只是一個更新的@喬治的代碼版本,目前的工作。但是我做了其他的解決方案,避免一個Ajax請求:

簡碼關鍵解決方案

某些Instagram的網址中使用縮短的URL語法。這允許客戶僅使用簡碼代替正確請求的媒體想法IF。

一個例子簡碼的網址是這樣的:https://www.instagram.com/p/Y7GF-5vftL/

的「Y7GF-5vftL」是你的圖片簡碼。

   var Key = ""; 
       var i = url.indexOf("instagram.com/p/") + 16; //Once again you need to define 'url' yourself. 
       for(;i<=url.length-1;i++)//length is invalid but shouldn't matter because it won't make to past 10 chars 
       { 
        if (url.charAt(i) == '/') 
         break; 
        Key += url.charAt(i); 
       } 

在相同的範圍內,'鑰匙'將包含您的簡碼。我們要求讓我們說,一個低分辨率畫面,使用該簡碼,你會做類似如下:

//check to see if it is a shortcode url or not(optional but recommended) 
       if (Key.length <= 12) { //is 
        $.ajax({ 
         type: "GET", 
         dataType: "json", 
         jsonp: false, 
         cache: false, 
         url: "https://api.instagram.com/v1/media/shortcode/" + Key + "?access_token=" + access_token, //Define your 'access_token' 
         success: function (RawData) { 
          var LowResURL = RawData.data.images.low_resolution.url; 
         } 
        }); 
       } 

有很多在返回RAWDATA結構的其他有用的信息。記錄它或查找api文檔以查看。

整版解決方案 所以如果你知道該網址,全Instagram的頁面,如:https://www.instagram.com/p/BAYYJBwi0Tssh605CJP2bmSuRpm_Jt7V_S8q9A0/

那麼實際上你可以閱讀HTML找到包含媒體ID元屬性。還有一些其他算法可以在URL上進行預處理以獲得它,但我相信這需要付出很多努力,所以我們會保持簡單。

注意:這有點不穩定,容易被修補。此方法不適用於使用預覽框的頁面。因此,如果您在某人的個人資料中點擊某張照片時將當前的HTML提供給它,則會中斷並返回一個錯誤的媒體ID。

var MediaID = ""; 
var e = HTML_String.indexOf("al:ios:url") + 42; //HTML_String is a variable that contains all of the HTML code for the URL. There are many different ways to retrieve this so look one up. You do need to define this. 
for (var i = e; i <= e + 100; i++) {//100 should never come close to being reached 
    if (request.source.charAt(i) == "\"") 
     break; 
    MediaID += request.source.charAt(i); 
} 

而且你去那裏,一堆不同的方式使用的Instagram的API來獲取媒體ID。希望一個人修復你的掙扎。

相關問題