newism / craft3-instagram
Instagram插件,用于连接用户/站点与Instagram基本API
Requires
- craftcms/cms: ^3.4
- league/oauth2-client: ^2.4
- league/oauth2-instagram: ^3.0
Requires (Dev)
- codeception/codeception: ^3.0
- craftcms/cms: ^3.4
- vlucas/phpdotenv: ^3.0
This package is auto-updated.
Last update: 2024-09-29 05:49:29 UTC
README
Instagram插件,通过访问令牌和基本显示API将元素连接到Instagram基本API。
要求
此插件需要Craft CMS 3.4.0或更高版本。
安装
要安装插件,请按照以下说明操作。
- 打开您的终端并转到您的Craft项目:
cd /path/to/project
- 然后让Composer加载插件:
composer require newism/craft3-instagram
- 在控制面板中,转到设置→插件,然后点击Instagram的“安装”按钮。
Instagram插件概述
此插件创建了一个新的字段类型,可以生成Instagram API访问令牌,允许您查询Instagram用户的媒体。
与其他Instagram插件不同,因为它
- 使用(https://developers.facebook.com/docs/instagram-basic-display-api)[Instagram基本显示API]来获取用户媒体
- 作为字段类型实现,而不是全局设置。
为什么是字段类型?
字段类型可以分配给任何元素,包括条目、全局、用户。这为您提供了多个用例,例如
- 条目:允许商业列表条目连接自己的Instagram帐户
- 全局:创建全局字段并连接您的网站Instagram帐户
- 用户:允许用户连接自己的instagram帐户
配置Instagram插件
要配置此插件,您需要“OAuth重定向URI”和“注销回调URL”,这些可以在插件设置中找到。
接下来,请按照入门文档中的前三个步骤操作。
- 创建Facebook应用
- 配置Instagram基本显示
- 添加Instagram测试用户
创建Facebook应用后,您将获得一个App Id和App Secret。将这些值输入到插件设置中。注意:将它们存储为环境配置是个好主意。
使用Instagram
创建访问令牌
配置插件后,您需要创建一个新的字段并将其分配给元素。为了测试,我建议创建一个新的“Instagram”字段并将其分配给全局集。
编辑全局集,并点击您创建的字段中的“连接Instagram”。确保您要连接的用户是入门文档第3步中设置的一个测试用户。
如果一切顺利,您将被要求授权您的Facebook应用,将创建一个长期访问令牌并显示在您的自定义字段中。
保存全局集。
获取用户媒体
一旦您有了令牌,您就可以获取连接用户的媒体。在您的模板中粘贴以下内容(将entry.instagramToken
更改为您的全局字段名称。
{# Check if a token is set #}
{% if entry.instagramToken %}
{# Fetch the user media #}
{% set userMedia = craft.instagram.fetchUserMedia(entry.instagramToken) %}
{# Check userMedia was returned #}
{% if userMedia.data|default() | length %}
{# Loop over the user media #}
{% for entry in userMedia.data %}
{# Output the image #}
<img src="{{ entry.media_url }}" alt="{{ entry.caption|default() }}" />
{% endfor %}
{% endif %}
{% endif %}
craft.instagram.fetchUserMedia(entry.instagramToken)
的输出与instagram API匹配
{
"data": [
{
"id": "17895695668004550",
"caption": ""
},
{
"id": "17899305451014820",
"caption": ""
},
{
"id": "17896450804038745",
"caption": ""
},
{
"id": "17881042411086627",
"caption": ""
}
],
"paging": {
"cursors": {
"after": "MTAxN...",
"before": "NDMyN..."
},
"next": "https://graph.faceb..."
}
}
选项
craft.instagram.fetchUserMedia(token, [options])
接受两个参数
- token (必需):保存在字段中的访问令牌
- options (可选):一个包含两个可能键的数组
- cache:缓存请求的秒数。默认值是
null
(无缓存)。遵循Yii标准,0
是无限。 - fields:字段列表。默认值是
caption,id,media_type,media_url,permalink,thumbnail_url,timestamp,username,children
。
- cache:缓存请求的秒数。默认值是
字段选项可以包含以下任何一项
缓存
建议您将 craft.instagram.fetchUserMedia()
方法用 craft {% cache %} 标签包裹,或者使用 Blitz 等其他类型的模板缓存。
Instagram 开发路线图
一些待办事项和潜在功能的想法
- 发布它
- 实现取消授权回调
- 检查 PHP 7.3 和 7.2 的兼容性
由 Leevi Graham 提供