nixondesign / craft-instagram
此包已被 废弃,不再维护。未建议替代包。
Craft CMS 的 Instagram 基本API集成
v2.0.0
2022-10-06 11:16 UTC
Requires
- craftcms/cms: ^4.2.0
This package is auto-updated.
Last update: 2023-06-22 09:08:00 UTC
README
此插件提供对Instagram Basic Display API的便捷访问,适用于Craft CMS。
功能
- Twig & JSON:通过动作URL,内容在Twig和JSON中均可以访问。
- 多站支持:应用按站点进行身份验证,允许每个站点的媒体内容。
- 简单的令牌管理:令牌可以通过控制面板或CLI轻松刷新。
授权Instagram
在您授权插件之前,您必须首先设置一个Facebook应用,您将使用此应用来授权用户和进行API调用。设置完毕后,您将需要App ID和App Secret。要设置您的应用,请按照官方入门指南中的步骤1到3操作。当被要求输入“有效的OAuth重定向URI”时,请使用插件设置页面中找到的URL。如果您使用的是多站点,您需要为要授权的每个账户创建测试用户。
插件设置
- 首先,请确保您已登录您想要验证的Instagram账户,或者完全注销。
- 转到插件设置页面,如果运行Craft多站,请切换到适当的站点。
- 输入在“应用仪表板”>“产品”>“Instagram”>“基本显示”下找到的App ID和App Secret。这些可以设置为环境变量。
- 点击“验证”,您将被带到Instagram以验证插件。验证后,您将被重定向回插件页面。
刷新访问令牌
此插件使用长期访问令牌,有效期60天。可以使用instagram/tokens/refresh
CLI命令刷新这些令牌,以将其有效期再延长60天。此命令可以通过cron定期运行。
0 0 1 * * /craft instagram/tokens/refresh
令牌也可以通过控制面板刷新。
显示用户媒体
获取用户可以通过两种方式处理,通过Twig或使用从动作URL返回的JSON。
Twig
可以使用getMedia()
方法显示用户的媒体。此方法接受一个可选的选项参数。
{% set feed = craft.instagram.getMedia({ limit: 20 }) %} {% if feed %} {% for media in feed.media %} {{ media.getImg() }} {% endfor %} {% endif %}
媒体对象
属性 | 描述 |
---|---|
id | ID。 |
caption | 标题文本。相册中的媒体不返回 |
username | 所有者的用户名 |
timestamp | 发布日期 |
permalink | 永久链接 |
mediaUrl | URL |
mediaType | 媒体类型。可以是IMAGE、VIDEO或CAROUSEL_ALBUM |
thumbnailUrl | 缩略图图像URL。仅在视频媒体上可用 |
getUrl() | 根据媒体类型,可以是mediaUrl或thumbnailUrl |
getImg() | 返回一个图像元素 |
分页
除了media
属性外,getMedia
还返回用于分页的before
和after
属性。
JSON
媒体源可以通过instagram/media/fetch
操作URL以JSON格式提供。选项可以作为查询参数传递。
instagram/media/fetch?limit=1
{ "media": [ { "id": "", "caption": "", "username": "", "timestamp": "", "permalink": "", "mediaUrl": "", "mediaType": "", "thumbnailUrl": "" } ], "before": "", "after": "" }
分页
可以通过使用与media
属性一起发送的before
和after
属性来实现分页。
{ "media": [], "before": "", "after": "" }
然后这些可以作为选项与下一个请求一起发送。
Twig
craft.instagram.getMedia({ after: "xxxxxxxxxxxxxxxxxxx" })
操作URL
instagram/media/fetch?after=xxxxxxxxxxxxxxxxxxx
选项
Twig变量和JSON端点都接受以下选项
选项 | 描述 | 默认值 |
---|---|---|
after | 用于获取媒体后的唯一标记 | null |
before | 用于获取媒体前的唯一标记 | null |
cache | 以秒为单位缓存数据的时间,设置为false表示不缓存 | 300 |
limit | 要获取的媒体项目数,如果为null,则使用Instagram的默认值 | null |