Instagram Basic API:是不是可以在一次查询中从“CAROUSEL_ALBUM”获取 media_url?

Posted

技术标签:

【中文标题】Instagram Basic API:是不是可以在一次查询中从“CAROUSEL_ALBUM”获取 media_url?【英文标题】:Instagram Basic API: Is it possible to get the media_url from "CAROUSEL_ALBUM" in one query?Instagram Basic API:是否可以在一次查询中从“CAROUSEL_ALBUM”获取 media_url? 【发布时间】:2020-03-03 02:15:13 【问题描述】:

如果您正在阅读this,您会看到可以将children 添加到fields 查询参数中。这意味着如果您有一个类型为 "CAROUSEL_ALBUM" 的媒体,您也将获得图像的 ID。

CURL 示例:

https://graph.instagram.com/me?access_token=<mytoken>&fields=id,media_type,media_url,children

结果:

...
     "id": "some-id",
     "media_type": "CAROUSEL_ALBUM",
     "media_url": "some-url",
     "children": 
        "data": [
           
              "id": "another-id"
           ,
           
              "id": "other-id"
           
        ]
     
...

是否可以将 media_url 添加到孩子的数据中?我真的不想循环获取所有内容...

【问题讨论】:

应该可以通过字段扩展来实现。 developers.facebook.com/docs/instagram-basic-display-api/…, developers.facebook.com/docs/graph-api/advanced#fieldexpansion @04FS 爱你,它成功了。你只需要添加childrenmedia_url @Shadrix 我正在尝试实现相同的目标,但不能。您能否添加问题的答案,显示完整的请求和响应示例? @Mecha 看看 :) 【参考方案1】:

@Mecha 我为 php 做了这个,但也许你可以阅读这个


    /**
     * Fetches media from the user
     *
     */
    public function fetchUserMedia(array $options, int $limit = 24): object
    
        $query = http_build_query(array_merge([
            'limit' => $limit,
            'fields' => 'username,caption,id,media_type,media_url,thumbnail_url,childrenmedia_url,thumbnail_url',
            'access_token' => $this->token
        ], $options));


        return json_decode((string) ($this->client->get("https://graph.instagram.com/me/media?$query"))->getBody());
    

一个输出示例是这样的:


          "caption": "I\u2018m addicted to chia pudding, how about you? \ud83d\ude0d Layers of zingy lemon vanilla chia pudding, mango thyme infused coconut yoghurt and juicy fresh mango roses. \ud83e\udd24\nMade by \u0040addictedtodates \ud83c\udf4b\u2063\u2063\n\u2063\u2063\u2800\nAND now to our tagged picture of today \ud83d\ude0b\ud83d\ude0b Swipe left to see \u0040smoothie_yumm\u2019s coconut vanilla smoothie bowl topped with turmeric chia pudding \ud83e\udd29\n\u2800\nYou can find the recipe on her page \ud83d\udc9b\n\u2800\n\ud83c\udf31 Tag #avidofood or\u00a0\u0040avidofood\u00a0to be featured in the future!\n\u2800\n\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\u22c6\n#vegan #veganfood #veganfoodie #veganfoodshare #vegatarisch #veganpasta #vegandinner #veganeats #healthyfood #plantbased #plantbasedfood #veganpower #plantbaseddiet #veganiseasy #whatveganseat #forksoverknives #vegetarianrecipes #veganinspo #vegetarian #veganism #veganmeals #veganlife #veganlifestyle #veganlove #veganmealprep #veganrecipes #veganhealth #veganlunch",
          "id": "18039820117203997",
          "media_type": "CAROUSEL_ALBUM",
          "media_url": "https://scontent.xx.fbcdn.net/v/t51.2885-15/71511404_203552310658678_3865693276191599368_n.jpg?_nc_cat=100&_nc_oc=AQlet8stFGS32TTdBhXT4NNfpzd8eNq7oI0xilix4qyiVvt50avuk6RVotMgM-BUptmCrsVwLCGkPCc-sL7b-eAy&_nc_ht=scontent.xx&oh=f1a700b4d021d2d577d54cd74f4838fa&oe=5E534677",
          "permalink": "https://www.instagram.com/p/B3-XRMOIWPW/",
          "username": "avidofood",
          "children": 
             "data": [
                
                   "media_url": "https://scontent.xx.fbcdn.net/v/t51.2885-15/71511404_203552310658678_3865693276191599368_n.jpg?_nc_cat=100&_nc_oc=AQlet8stFGS32TTdBhXT4NNfpzd8eNq7oI0xilix4qyiVvt50avuk6RVotMgM-BUptmCrsVwLCGkPCc-sL7b-eAy&_nc_ht=scontent.xx&oh=f1a700b4d021d2d577d54cd74f4838fa&oe=5E534677",
                   "id": "18041124712207922"
                ,
                
                   "media_url": "https://scontent.xx.fbcdn.net/v/t51.2885-15/72483636_1251439178368296_6758852942587086206_n.jpg?_nc_cat=109&_nc_oc=AQmVrktP2g7Z72WifVdu4z17OzwM7ZNFLln1e1ZQxjdUi-j79Ttf-i840mjYkOb-TW3Dwm39Gyoe3EefxwB7UydW&_nc_ht=scontent.xx&oh=a07d3f51aa5eb5eb30697c4ad25d4e35&oe=5E60AEC3",
                   "id": "17851162897631131"
                
             ]
          

【讨论】:

谢谢。我实际上也在使用 PHP。我现在明白为什么它对我不起作用了。如果您在 children... 的字段扩展中包含无效字段,则 API 不会扩展 children.data,而是将响应中的所有主要项目替换为其子项。必须是 Graph API 中的错误。【参考方案2】:

您只需要将字段嵌套在子查询参数中

/media?fields=id,media_url,childrenmedia_url&access_token=

【讨论】:

以上是关于Instagram Basic API:是不是可以在一次查询中从“CAROUSEL_ALBUM”获取 media_url?的主要内容,如果未能解决你的问题,请参考以下文章

由于无效原因,我的应用被 Instagram Basic Display API 审核拒绝

如何在没有用户登录的情况下访问 Instagram Basic Display API?

无法获得 Instagram Basic Display API 的 access_token

如何使用新的 Instagram Graph 或 Basic Display API 获取普通用户的个人资料图片(截至 2020 年 6 月 29 日)

如何从 Instagram API 获取用户名?

Instagram 基本显示 API 分页