chill-pills/laravel-instagram-basic-feed

Laravel 包,用于连接到 Instagram 的新 API Basic Display。获取个人用户的帖子并将它们缓存在缓存中,可以通过特定命令或使用调度程序来实现,并注意每两个月刷新令牌。

0.3.0 2022-04-24 09:48 UTC

This package is auto-updated.

Last update: 2024-09-11 19:04:40 UTC


README

Laravel 包,用于连接到 Instagram 的新 API Basic Display。获取个人用户的帖子并将它们缓存在缓存中,可以通过特定命令或使用调度程序来实现,并负责每两个月刷新 Instagram 令牌。

开始使用

要使用 Instagram Basic Display API,您需要注册一个 Facebook 应用并配置 Instagram Basic Display。请遵循入门指南

需求

  • PHP 7 或更高版本
  • cURL
  • Facebook 开发者账户
  • Facebook 应用

安装

通过运行以下命令在您的应用程序中安装包

composer require chill-pills/laravel-instagram-basic-feed

在您的 .env 文件中添加并完成以下行

INSTAGRAM_VALID_OAUTH_URI=
INSTAGRAM_APP_ID=
INSTAGRAM_SECRET_KEY=
INSTAGRAM_ACCESS_TOKEN=

对于 INSTAGRAM_VALID_OAUTH_URI 条目,您将使用在创建 Instagram 应用时在“有效的 OAuth 重定向 URI”字段中使用的相同 URI。我们将获取下一步中的 INSTAGRAM_ACCESS_TOKEN。(确保所有其他环境条目都已完整)

设置

我们需要进行以下步骤以确保我们的包配置正确:

  • 允许您的应用访问您的 Instagram 账户的资料和媒体
  • 从 URL 中检索授权码
  • 使用授权码获取短期 API 令牌
  • 将短期 API 令牌交换为长期 API 令牌

允许您的应用访问您的 Instagram 账户的资料和媒体

我们需要生成一个链接,将用户重定向到 Instagram 的“授权窗口”。您可以通过运行以下命令生成 URL

php artisan instagram-feed:get-authorization-url

在浏览器中复制并输入 URL(您的授权窗口链接应该类似于以下内容)

https://api.instagram.com/oauth/authorize
  ?client_id={INSTAGRAM_APP_ID}
  &redirect_uri={INSTAGRAM_VALID_OAUTH_URI}
  &scope=user_profile,user_media
  &response_type=code

接下来,您将看到授权窗口

Image of Yaktocat

点击授权

从 URL 中检索授权码

您将被重定向到 INSTAGRAM_VALID_OAUTH_URI。如果查看浏览器地址栏,您应该注意到 URL 中附加了一个授权码,该授权码已附加到重定向 URL 上。如下所示

{INSTAGRAM_VALID_OAUTH_URI}?code=AQBv...Xw#_

复制授权码,重定向 URL 中的授权码是 code= 之后的内容,直到(但不包括)结尾的 #_

使用授权码获取短期 API 令牌并将其交换为长期 API 令牌

现在,使用授权码,我们将生成可以在我们的应用程序中使用的访问令牌。使用以下命令生成令牌。我们生成长期 access_token,因为这些令牌有效期为 60 天。将 authorization_code 替换为上一步中的代码。

php artisan instagram-feed:setup-new-access-token <authoriczation-code>

太棒了!现在,有了这个长期访问令牌,您可以在接下来的 60 天内向 API 发送请求。您还可以刷新令牌,将其延长 60 天,只要令牌未过期并且至少有 24 小时旧(并且没有被您的 Instagram 用户取消授权您的应用所撤销)。

用法

有两个命令可以让你获取你的信息流或更新访问令牌。

php artisan instagram-feed:crawl
php artisan instagram-feed:refresh-key

您可以添加以下调度程序的命令来自动执行这些命令

    protected function schedule(Schedule $schedule)
    {
        $schedule->command(InstagramCrawlFeed::class)->hourly();
        $schedule->command(InstagramRefreshAccessToken::class)->monthly();
    }

不要忘记在您的 app/Console/Kernel.php 文件中启用 Laravel Basic Scheduler 上的 CRON

* * * * * cd /home/path/to/your/project && php artisan schedule:run >> /dev/null 2>&1

要在您的页面上显示 Instagram 信息流,只需添加以下 Blade 命令以包含部分到您的页面中。

@include('instagram-basic-feed::instagram-post')

您可以将用于搜索帖子的标签传递给 @include

@include('instagram-basic-feed::instagram-post', ['hastag' => '#duckhunt'])

如果您想修改显示Instagram帖子的视图本身

php artisan vendor:publish --tag=instagram-basic-feed-view

MIT许可证(MIT)。更多信息请参阅许可证文件