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 |