aik27 / inwidget
在您的网站上显示instagram.com的图片!
Requires
- php: >=5.4.0
- ext-curl: *
- ext-json: *
This package is not auto-updated.
Last update: 2020-08-16 11:36:05 UTC
README
这个库基于PHP,允许您在您的网站上展示Instagram账户的图片。
功能
- 许多设置
- 直接链接到图片
- 个人资料统计
- 自适应、响应式模板
- 支持多个标签
- 自动检测语言
- 无需ACCESS_TOKEN即可运行
- 一行HTML代码即可插入
- 多种皮肤
- 无广告
- 适用于任何用途
- 详细说明
系统要求
PHP >= 5.4.0 且包含cURL扩展
安装
1. 将源代码上传到您网站的根目录
下载源代码。提取/inwidget文件夹。将/inwidget文件夹及其所有文件上传到网站上。
或者使用composer
composer.phar require aik27/inwidget
composer require aik27/inwidget
注意。inWidget使用相对路径,因此您可以将其上传到任何文件夹。之后,不要忘记更改IFRAME标签中的URL。
2. 设置文件夹的写权限:/inwidget/cache
inWidget将在/inwidget/cache文件夹中存储缓存数据。如果此目录没有写权限,您将看到ERROR #101。
3. 配置
修改/inwidget/config.php 您需要指定Instagram登录和其他参数
参数列表
- LOGIN - Instagram登录
- HASHTAG - 用逗号分隔的标签(例如:girl, man)。选择将从标记了所需标签的图片周围的世界中按顺序进行
- ACCESS_TOKEN - 由Instagram应用授予您的哈希密钥。此选项不是必需的。如果您使用它,小部件将通过官方端点API(https://www.instagram.com/developer/)开始发送请求。在这种情况下,小部件将只有应用程序本身拥有的那些权利和限制。有关更多信息,请使用此链接:https://inwidget.ru/#token
- authLogin 和 authPassword - 用于授权的账户的登录名和密码。这些选项不是必需的。授权对于获取数据的替代方法来说是必要的,并且在您使用未记录的API时提供了更多稳定性。建议您为此创建一个单独的账户,并禁用两步验证。授权数据不会传输给第三方和插件作者
- loginAvailable - 如果您需要在不同的网页页面上分离登录,只需将可能的登录添加到下面的数组中。之后,您可以通过GET变量将登录发送到小部件。它只与未记录的API一起工作。例如:/inwidget/index.php?login=fotokto_ru
- tagsAvailable - 同样的选项用于标记媒体。将可能的标记添加到下面的数组中。然后您可以使用GET变量进行标记。例如:/inwidget/index.php?tag=photography。您可以与“loginAvailable”和“tagsFromAccountOnly”选项一起使用。
- tagsBannedLogins - 在此处指定禁止登录的列表。这些用户的照片将不会在小部件中显示。用逗号分隔用户名。例如:mark18, kitty45
- tagsFromAccountOnly - 仅从您的账户搜索标记媒体 [ true / false ]。为了提高搜索效率,请增加“imgCount”选项的值
- imgRandom - 图片的随机顺序 [ true / false ]
- imgCount - 小部件将从Instagram获取多少张图片?
- cacheExpiration - 缓存过期时间(小时)
- cacheSkip - 跳过缓存数据 [ true / false ]。这意味着每次都会发送Instagram API请求。警告!仅在使用true值进行调试时使用
- cachePath - 缓存目录的完整路径
- skinDefault - 默认皮肤。可能的值:default, modern-blue, modern-green, modern-red, modern-orange, modern-grey, modern-black, modern-violet, modern-yellow。如果通过$_GET变量设置了皮肤,则此选项可能没有效果。
- skinPath - 皮肤目录的路径
- langDefault - 默认语言 [ ru / en / ua ] 或其他来自langs目录的语言
- langPath - langs目录的完整路径
- langAuto - 语言自动检测 [ true / false ]。如果通过$_GET变量设置了语言,则此选项可能没有效果
4. 将此代码粘贴到您的html模板中
<!-- default -->
<iframe src='/inwidget/index.php' scrolling='no' frameborder='no' style='border:none;width:260px;height:330px;overflow:hidden;'></iframe>
或使用具有不同显示类型的其他示例
<!-- Without profile -->
<iframe src='/inwidget/index.php?toolbar=false' data-inwidget scrolling='no' frameborder='no' style='border:none;width:260px;height:320px;overflow:hidden;'></iframe>
<!-- Mini 1 -->
<iframe src='/inwidget/index.php?width=100&inline=2&view=12&toolbar=false' data-inwidget scrolling='no' frameborder='no' style='border:none;width:100px;height:320px;overflow:hidden;'></iframe>
<!-- Mini 2 -->
<iframe src='/inwidget/index.php?width=100&inline=1&view=3&toolbar=false' data-inwidget scrolling='no' frameborder='no' style='border:none;width:100px;height:320px;overflow:hidden;'></iframe>
<!-- Horizontal orientation -->
<iframe src='/inwidget/index.php?width=800&inline=7&view=14&toolbar=false' data-inwidget scrolling='no' frameborder='no' style='border:none;width:800px;height:295px;overflow:hidden;'></iframe>
<!-- Large previews -->
<iframe src='/inwidget/index.php?width=800&inline=3&view=9&toolbar=false&preview=large' data-inwidget scrolling='no' frameborder='no' style='border:none;width:800px;height:850px;overflow:hidden;'></iframe>
调整小部件显示
当访问小部件脚本时,参数作为GET变量传递。为此,您必须更改IFRAME标签中的URL。例如,要将小部件宽度设置为600px并显示每行五张照片,您需要在URL中添加适当的参数。
/inwidget/index.php?width=600&inline=5
参数列表
- width - 小部件宽度(默认:260px)
- inline - 每行的照片数量(默认:4张)
- view - 小部件中可以显示的照片数量(默认:12张,最大:30张,您可以在config.php中更改它)
- toolbar - 显示带有头像和统计信息的工具栏( true / false,默认:true)
- preview - 图片的大小和质量(小 - 320px,大 - 640px,全尺寸 - 最大可用尺寸,默认:大)
- lang - 小部件语言(ru / en / ua,默认设置从config.php获取)。此参数的优先级高于config.php中的设置
- skin - 小部件皮肤(default / modern-blue / modern-green / modern-red / modern-orange / modern-gray / modern-black / modern-violet / modern-yellow)。默认值:default。此参数的优先级高于config.php中的设置
- adaptive - 自适应,响应式模式(true / false,默认:false)。小部件将自动调整到html容器或浏览器窗口的尺寸
当您更改宽度或照片数量时,不要忘记更改IFRAME标签的大小。
如何使小部件自适应/响应式? (示例)
在 IFRAME 标签的 URL 中添加 GET 变量 "adaptive"。
/inwidget/index.php?adaptive=true
值必须设置为 true。之后,小部件将自动调整到 HTML 容器或浏览器窗口的尺寸。在这种情况下,GET 参数 "width" 将被忽略,当小部件宽度超过 400px 时,"inline" 参数将生效。
请参阅自适应模式的演示: https://inwidget.ru/adaptive.php
获取访问令牌的视频说明
https://www.youtube.com/watch?v=_O669Dx3djw
生成访问令牌的 URL
https://www.instagram.com/oauth/authorize/?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=token&scope=basic
小部件可以与两种类型的 API (未记录的和端点) 一起工作。默认 API 是未记录的。对于它不需要访问令牌。在组件的设置中指定访问令牌将其转换为端点 API 模式 (https://www.instagram.com/developer/)。如果您想在 Instagram 中创建自己的应用程序,请使用上面的视频说明。请注意,您的应用程序将首先进入“沙盒”,具有以下限制
- 20 - 每个请求可以获取的最大照片数量。
- 500 - 每小时的最大请求数量。
- 最重要的是 - 可以从您的账户中获取照片。同样适用于按标签选择。
请注意,Instagram 已宣布到 2020 年结束对端点 API 的支持。更多信息: https://developers.facebook.com/blog/post/2018/01/30/instagram-graph-api-updates/
开发者
您可以将 inWidget 库包含在您的应用程序中,并通过类构造函数设置参数。在使用下面的示例时,请注意文件路径。类支持自动加载。
默认情况下,组件使用由 instagram-php-scraper 库提供的未记录的 API。要切换到端点 API,您需要指定访问令牌。
#require_once 'inwidget/classes/Autoload.php'; require_once 'inwidget/classes/InstagramScraper.php'; require_once 'inwidget/classes/Unirest.php'; require_once 'inwidget/classes/InWidget.php'; try { // Options may change through the class constructor. For example: $config = array( 'LOGIN' => 'fotokto_ru', 'HASHTAG' => '', 'ACCESS_TOKEN' => '', 'authLogin' => '', 'authPassword' => '', 'tagsBannedLogins' => '', 'tagsFromAccountOnly' => false, 'imgRandom' => true, 'imgCount' => 30, 'cacheExpiration' => 6, 'cacheSkip' => false, 'cachePath' => $_SERVER['DOCUMENT_ROOT'].'/inwidget/cache/', 'skinDefault' => 'default', 'skinPath'=> '/inwidget/skins/', 'langDefault' => 'ru', 'langAuto' => false, 'langPath' => $_SERVER['DOCUMENT_ROOT'].'/inwidget/langs/', ); $inWidget = new \InWidget\Core($config); // Also, you may change default values of properties /* $inWidget->width = 800; // widget width in pixels $inWidget->inline = 6; // number of images in single line $inWidget->view = 18; // number of images in widget $inWidget->toolbar = false; // show profile avatar, statistic and action button $inWidget->preview = 'large'; // quality of images: small, large, fullsize $inWidget->adaptive = false; // enable adaptive mode $inWidget->skipGET = true; // skip GET variables to avoid name conflicts $inWidget->setOptions(); // apply new values */ $inWidget->getData(); include 'inwidget/template.php'; } catch (\Exception $e) { echo $e->getMessage(); }
错误代码
ERROR #101 - 无法访问缓存文件。您需要更改目录的权限:/inwidget/cache
如果缓存文件不存在,组件将尝试创建它。然后组件将尝试打开它以进行读写。不正确的权限导致此错误。如果您已经在缓存目录中有一些文件,请删除它们,因为它们也可能具有不正确的权限。
ERROR #102 - 无法获取缓存文件的最后修改时间。
这可能是您的服务器文件系统限制或不受支持的函数。如果组件无法确定时间,缓存将始终是过时的,这会导致永久请求 Instagram API。
ERROR #500 - 未知错误
请查看写入缓存文件的确切内容。此错误由官方 API 或 instagram-php-scraper 库生成。在大多数情况下,这意味着从 Instagram 服务器发送或接收数据时出现问题。删除缓存文件并刷新页面(其中显示组件),以尝试再次发送请求。
反馈、问题和建议
- 访问网站: https://inwidget.ru
- 请写信至:aik@inwidget.ru
- 在GitHub加入开发:https://github.com/aik27/inwidget
- 关于inWidget的文章在Habrahabr上:http://habrahabr.ru/post/223739/
捐赠
inWidget是一个非营利性库,它存在于纯粹的热情之中。欢迎您的支持!
PayPal: aik@inwidget.ru
谢谢!
版权
- 作者:Alexandr Kazarmshchikov
- 电子邮件: aik@inwidget.ru
- 网站: https://inwidget.ru
许可
此库是免费软件;您可以在MIT许可的条款下重新分发和/或修改它: https://inwidget.ru/MIT-license.txt