aik27/inwidget

此包已被废弃,不再维护。未建议替代包。

在您的网站上显示instagram.com的图片!

v1.3.3 2020-03-14 23:33 UTC

This package is not auto-updated.

Last update: 2020-08-16 11:36:05 UTC


README

这个库基于PHP,允许您在您的网站上展示Instagram账户的图片。

演示 >>

demo

功能

  • 许多设置
  • 直接链接到图片
  • 个人资料统计
  • 自适应、响应式模板
  • 支持多个标签
  • 自动检测语言
  • 无需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 服务器发送或接收数据时出现问题。删除缓存文件并刷新页面(其中显示组件),以尝试再次发送请求。

反馈、问题和建议

捐赠

inWidget是一个非营利性库,它存在于纯粹的热情之中。欢迎您的支持!

PayPal: aik@inwidget.ru

谢谢!

版权

许可

此库是免费软件;您可以在MIT许可的条款下重新分发和/或修改它: https://inwidget.ru/MIT-license.txt