簡體   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