PHP instagram API kullanımı

PHP Trend Makale

Merhaba dostlar, bu yazımızda bir ekibin gayri resmi yollarla yaptığı instagram-user-feed adlı API kullanımını anlatacağım.

Instagram API ile neler yapılabilir?

  • Kullanıcının profil verilerini çekebilirsiniz.
  • Kullanıcının paylaşmış olduğu medyalarını çekebilirsiniz.
  • Kullanıcının hikayelerini çekebilirsiniz.
  • Kullanıcının öne çıkan hikayelerini çekebilirsiniz.
  • Kullanıcının paylaştığı gönderinin ayrıntılarını çekebilirsiniz.
  • Takipçilerin listesini çekebilirsiniz
  • Takip edilenlerin listesini çekebilirsiniz
  • Kullanıcıları takip edebilir veya takibi bırakabilirsiniz.
  • Gönderileri beğenebilir veya beğeninizi geri çekebilirsiniz.
  • Hashtag gönderilerini çekebilirsiniz.
  • Bir gönderinin yorumlarını çekebilirsiniz.
  • Canlı yayın bilgilerini çekebilirsiniz.
  • Reels içeriklerini çekebilirsiniz.
  • IGTV içeriklerini çekebilirsiniz.
  • Bir kullanıcının etiketlendiği paylaşımları çekebilirsiniz.
  • HD profil resmini çekebilirsiniz.
  • Bir gönderiye yorum yapabilirsiniz.

Sizce de çok heyecanlı değilm mi? Hadi API'yi nasıl kuracağımızı ve nasıl kullanacağımıza geçelim.

Instagram API Kurulumu

API'yi Composer ile kuracağız. Kullanmış olduğunuz Terminal programnızı açıp projeyi çalıştıracağınız kalsör konumuna erişiniz ve kurulumu yapınız.

composer require pgrimaud/instagram-user-feed

Instagram API Kullanımı

Şimdi gelelim API'yi nasıl kullanacağımıza.

require "vendor/autoload.php";
use Instagram\Api;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
$cachePool = new FilesystemAdapter('Instagram', 0, __DIR__ . '/../cache');


$api = new Api($cachePool);
$api->login('username', 'password'); // Aksiyonları gerçekleştirecek hesap bilgileri.

Yukarıda gördüğünüz gibi aksiyonları gerçekleştirebilmemiz için bir instagram hesabı tanımlamamız gerekiyor. Kütüphaneyi'de dahil ettiğimize göre aksiyon almaya başlayalım.

Kullanıcının Profil Bilgilerini Çekiyoruz

$profile = $api->getProfile('eycreative'); // Çekilecek profilin kullanıcı adı.

echo "<pre>";
// print_r($profile) // Dizi içinde neler olduğunu görebilmek için tümünü ekrana yazdıralım.
echo "</pre>";

echo $profile->getuserName();
echo $profile->getfullName();
echo $profile->getbiography();
echo $profile->getfollowers();
echo $profile->getfollowing();
echo $profile->getprofilePicture();
echo $profile->getexternalUrl();
echo $profile->getmediaCount();

print_r(); ile yazdırdığımız dizi içinde ki tüm profil detay bilgilerini yazdırabilirsiniz.

Gönderi Ayrıntılarını Çekiyoruz

$medias = $profile->getMedias(); // Medyaların bulunduğu diziyi döngüye sokabilmek için ekleyiniz.

foreach ($medias as $media) {
 echo "<pre><hr>";
 echo 'ID        : ' . $media->getId() . "\n";
 echo 'Caption   : ' . $media->getCaption() . "\n";
 echo 'Link      : ' . $media->getLink() . "\n";
 echo 'Likes     : ' . $media->getLikes() . "\n";
 echo 'Date      : ' . $media->getDate()->format('Y-m-d h:i:s') . "\n\n";
 echo "<pre>";
}

yukarıda ki döngü ile kullanıcının paylaşmış olduğu medyaların bir kısmını çekebiliyoruz çünkü API tüm paylaşımları bir anda çekmemize izin vermiyor, eğer sayfalandırma kullanmazsak sadece 12 adet veri geleceğini göreceğiz. Peki nasıl tüm verileri çekeceğiz?

do {
 foreach ($medias as $media) {
  echo "<pre><hr>";
  echo 'ID        : ' . $media->getId() . "\n";
  echo 'Caption   : ' . $media->getCaption() . "\n";
  echo 'Link      : ' . $media->getLink() . "\n";
  echo 'Likes     : ' . $media->getLikes() . "\n";
  echo 'Date      : ' . $media->getDate()->format('Y-m-d h:i:s') . "\n\n";
  echo "<pre>";
 }
  sleep(1);
} while ($profile->hasMoreMedias());

Artık sayfamızda aşağı doğru indikçe tüm veriler gelmeye başlayacaktır.

Kullanıcıları Takip Etme ve Takibi Bırakma Aksiyonları

En sevdiğim ve basit kullanıma sahip olan aksiyonumuzu alalım.

// Takip Etme Aksiyonu
try{
    $userId = 3266224637; // Takip edilecek kullanıcının ID'si
    $follow = $api->follow($userId);
    echo $follow . PHP_EOL;

    if($follow == TRUE){
        echo "Request Sent";
    }else{
        echo "NO";
    }

 } catch (InstagramException $e){
    print_r($e->getMessage());
 }catch (CacheException $e){
    print_r($e->getMessage());
 }

// Takibi Bırakma Aksiyonu

try{
     $userId = 3266224637; // Takipten çıkılacak kullanıcının ID'si
     $unfollow = $api->unfollow($userId);
     echo $unfollow . PHP_EOL;
    
      if($unfollow == TRUE){
          echo "Unfollow Okey";
      }else{
          echo "NO";
      }
    
     } catch (InstagramException $e){
        print_r($e->getMessage());
     }catch (CacheException $e){
        print_r($e->getMessage());
     }

checkpoint_required" 400 hatası aldım

Eğer sorgu yaparken bu hatayı alırsanız tanımladığınız instagram hesabınıza girip "Bu işlemi ben yaptım" seçeneğini işaretleyin, API'y, bir haftadır açmış olduğum sahte bir hesaptan deniyorum fakat henüz bir problem yaşamadım. Umarım sizlerde'de bir problem olmaz.

API'ile İlgili Daha Fazla Bilgi Alın

Makalemizin başında bahsettiğimiz gibi API'nin kullanım alanı çok geniş, bu yazımda basit bir şekilde kurulum ve kullanımından birkaç örnek vererek bahsettim, daha fazla bilgiye API'ni GitHub Dokümantasyonun'dan göz atabilirsiniz.
Diğer tüm örneklere API'nin GitHub Dökümantasyon içinde bulunan Examples klasöründen ulaşabilirsiniz.

Sonuç

Kurulumunu ve kullanımı anlatmış olduğum API göderüğünüz üzere kullanışlı bir proje olmuş yalnız makalemizin başında bahsettiğim gibi, Bu API Instagram platformuna resmi olmayan yollarla erişim sağlamak için geliştirilmiş üçüncü taraf unofficial yani gayri resmi bir API'dir, demek istediğim şudur ki, API şuan sorunsuz ve stabil bir şekilde çalışmakta ama bu durum ileriki günlerde değişebilir, bu yüzden bu API'yi projelerinizde kullanırken, olmasını istemediğimiz durumlara hazırlıklı bir şekilde entegre ediniz.

Ayrıca Ücretsiz Whois API adlı makalemde projelerinizde işinize yarayabilir. Beni dinlediğinizi için teşekkür ederim, sormak istediğiniz konuları yorumlarda belirtebilirsiniz.

 


Yorumlar (1)

  • Mert Kılıç 4 ay önce

    Selamlar, Ellerinize sağlık. Hem sizin, hem de api geliştiricilerinin :) Şöyle bir hata mesajı ile karşılaştım: {"message":"Please wait a few minutes before you try again.","require_login":true,"status":"fail"} Sanırım her request attığımızda tekrar login olmaya çalışıyor daha önce böyle bir hata mesajı ile karşılaştınız mı? Şimdiden teşekkürler. Yanıtla

    • Emin Yılmaz 4 ay önce

      $cachePool = new FilesystemAdapter('Instagram', 0, __DIR__ . '/../cache'); kodu proje klasörünün bir altına "Cache" adında bir dosya oluşturması gerekiyor. Kontrol edin eğer "Cache" klasörünü oluşturmamışsa sorunun kaynağı bu olabilir. Eğer klasör mevcutsa dediğiniz gibi geçici çözüm olarak hesap bilgilerini değiştirerek kullanabilirsiniz. Mutlu yıllar.

    • Mert Kılıç 4 ay önce

      Merhaba, bu cihazdan giriş yapan evet bendim yaptım fakat işe yaramadı. Kaynak kodlarda "Login with cookie" sayfası var, cookie kullanarak denedim fakat yine aynı hataya düşüyor. Hesabın şifresini değiştirdiğimde tekrar kullanıma aktif hale geliyor. Tabii ki kesin çözüm değil ama denemeler yapabilmek için geçici çözüm olarak kullanılabilir. Mutlu yıllar, iyi çalışmalar dilerim.

    • Emin Yılmaz 4 ay önce

      Merhaba Mert, öncelikle yorumun için teşekkür ederim. Aldığınız hatayı daha önce hiç almadım ama checkpoint_required 400 hatası ile ilişkili olabilir Hatayı aldıktan sonra Instagram hesabınıza girin, "Bu işlemi ben yaptım" seçeneği gelmesi gerekiyor. Umarım sorunu çözebilmişsinizdir.