繁体   English   中英

如何使用 PHP 从我自己的 Instagram 获取图像?

[英]How to get images from my own Instagram with PHP?

有人可以告诉我如何通过 PHP 从我自己的 Instagram 获取图像吗? 我有登录名、密码、应用程序 ID、应用程序机密。 IG 更改了 api,因此包括如何获取访问令牌在内的所有文档都不起作用。 我有这样的代码和平:

$fb = new \Facebook\Facebook([
    'app_id' => self::APP_ID_IG,
    'app_secret' => self::APP_SECRET_IG,
    'default_graph_version' => 'v2.10',
]);

// This return string which creates access token as "app_id value|app_secret value"
$token = $fb->getApp()->getAccessToken();

// This line throws me an error: 
// Error validating application. Cannot get application info due to a system error.
$response = $fb->get('https://graph.instagram.com/me/media?fields=media_url,media_type', $token->getValue());

我迷失在其中。 感谢帮助。

你应该看看Instagram 的 Media API

此端点应该用于查询用户的媒体: GET /{ig-user-id}/media为您提供媒体 ID 列表:

{
  "data": [
    {
      "id": "17895695668004550"
    },
    {
      "id": "17899305451014820"
    },
    {
      "id": "17896450804038745"
    },
    {
      "id": "17881042411086627"
    },
    {
      "id": "17869102915168123"
    }
  ]
}

之后,我认为您应该使用图形 API 来获取每个媒体 ID 的图像 URL。

不久前我创建了一个 vuejs 适配,也许这个代码结构片段可以帮助你,因为我现在没有时间将它翻译成php ,它是用javascript编写的,但 API 请求保持不变(只需使用curl而不是axios ): https://gitlab.com/-/snippets/1957175

一般步骤:

  1. 通过登录窗口或 Facebook 应用程序获取您的授权码(如下所述)

  2. Transform it into a shortterm access token

curl --request POST \
  --url 'https://api.instagram.com/oauth/access_token?grant_type=authorization_code&client_id=[CLIENT_ID_HERE]&client_secret=[CLIENT_SECRET_HERE]&redirect_uri=[REDIRECT_URI_HERE]&code=[AUTHORIZATION_CODE_HERE]' \
  --header 'Content-Type: multipart/form-data' \
  --form client_id=[CLIENT_ID_HERE] \
  --form client_secret=[CLIENT_SECRET_HERE] \
  --form code=[AUTHORIZATION_CODE_HERE] \
  --form grant_type=authorization_code \
  --form redirect_uri=https://[REDIRECT_URI_HERE]/
  1. 将其转换为长期访问令牌
GET https://graph.instagram.com/access_token?grant_type=ig_exchange_token&access_token=[SHORTTERM_ACCESS_TOKEN_HERE]&client_secret=[CLIENT_SECRET_HERE]
  1. 使用长期访问令牌作为授权,使用我的代码段中的 URL 查询媒体图端点。
  2. 每 60 天刷新一次长期访问令牌( 请参阅我对 Github 主题的回答)。 例如,您可以通过 CRON 完全自动化该步骤。
GET https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=[OLD_ACCESS_TOKEN_HERE]

有关将哪个字段添加到查询中的更多信息,请查看官方 facebook 文档


通过 Facebook 应用获取授权码:

  1. 登录您的Facebook 开发者帐户
  2. 创建一个新的应用程序
  3. 在产品下,添加Instagram Basic Display并填写所有必填字段

Instagram 基本显示

  1. Instagram Basic Display产品的Basic Display部分中,您将找到您的App IDSecret 应用程序 ID 和机密

  2. 您可以在下方输入您的redirect_uri

重定向uri

  1. 最后是用户令牌生成器,您可以使用它

[...] 为您的任何公共 Instagram 帐户快速生成长期存在的 Instagram 用户访问令牌。 如果您 [...] 不想为实现授权窗口而烦恼,这将很有用 [...] 请参阅 Instagram 基本显示 API 文档

  1. 继续3.一般步骤

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM