javascript - 在哪里可以找到图像的 Instagram 媒体 ID(具有访问 token 并关注图像所有者)?

标签 javascript php instagram

我有 Instagram 照片的图片页面网址。现在我想将此图像页面 url 发送到 instagram api 并获取媒体 ID 和所有者用户名。如果图像是公开的,则以下 api 调用效果很好,但如果图像是私有(private)的,它将失败并给我 No Media Match

我已经在关注图片所有者并拥有用户 instagram api 的访问 token 。那么我如何使用 php 或 javascript 获取具有图像页面 url 的媒体 ID 和图像所有者名称?是否有任何其他 api 需要用户处理私有(private)图像?

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

最佳答案

所以有很多折旧的解决方案,所以这里是我的编辑/解决方案,截至该日期仍在运行。

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 请求:

简码 key 解决方案

某些 Instagram 网址使用缩短网址语法。这允许客户在正确请求的情况下仅使用简码代替媒体创意。

一个示例短代码 url 如下所示: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);
                }

在相同的范围内,“Key”将包含您的短代码。现在请求让我们说,低分辨率图片,使用这个短代码,你会做类似下面的事情:

//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 的多种不同方式。希望有人能解决您的问题。

关于javascript - 在哪里可以找到图像的 Instagram 媒体 ID(具有访问 token 并关注图像所有者)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20158362/

相关文章:

javascript - Css3 过渡队列

JAVA 中的 JavaScript 类型数组

javascript - Bootstrap 日期选择器未加载

php - PHP 未完全检索 Shell 输出!

ios - 使用 UIDocumentInteractionController 时点击 "Open in Instagram"时发生崩溃

php - Instagram API 被黑以允许上传?

javascript - 使用 Id 和 Bootstrap 样式解析表记录

HTML 样式属性中的 PHP 代码(或被引号混淆)

php - 如何通过 Facebook PHP SDK 获取 App Access Token?

api - Instagram API - 用户照片