Merhaba dostlar, bu yazımızda bir ekibin gayri resmi yollarla yaptığı instagram-user-feed adlı API kullanımını anlatacağım.
Sizce de çok heyecanlı değilm mi? Hadi API'yi nasıl kuracağımızı ve nasıl kullanacağımıza geçelim.
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
Ş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.
$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.
$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.
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());
}
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.
$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.
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.
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.
Mert Kılıç 1 yıl ö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