所以有很多折旧的解决方案,所以这里是我的编辑/解决方案,截至目前有效。
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);
}
}
});
所以这只是@George 代码的更新版本,目前正在运行。但是,我提出了其他可以避免 ajax 请求的解决方案:
短代码密钥解决方案
某些 Instagram 网址使用缩短网址语法。这允许客户只使用短代码来代替正确请求的媒体创意。
示例短代码网址如下所示: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 页面的 URL,比如: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。希望有人能解决您的难题。