Yayınlanma: 56 years ago2 min okuma0 yorum

Facebook ve Instagram paylaşımlarını alma

Hayri Habip
Hayri HABİP
Software Engineer
image

Kişisel bir istekten dolayı Instagram' da ve Facebook' ta bir kullancıya ait tüm paylaşımları toplamam gerekiyordu. Tabiki bir yazılımcı bunu ilgili api' lere bağlanan bir uygulama ile yapardı. Bunun için şöyleçok ufacık bir uygulama hazırladım.Bu uygulamaya istekte bulunulacak api' yi belirtikten sonra "access token" değerini vererek çalışıyor. Tabi Instagram için "user id" ye de ihtiyacınız var. Ondan daha sonra bahsedeceğim. Bu değerleri girdikten sonra da uygulama api' ye kuyruk şeklinde isteklerde bulunarak kişiye ait tüm paylaşımları çekmeye başlıyor.

Facebook API

Hala bazı api' lerin dokümanlarını (biraz sonra bahsedeceğim Instagram' ınki gibi) okumak zor oluyor. Neyseki Facebook' unki böyle değil çünkü Graph API Exploreraracı var. Kurcalamak istediğim paylaşımları bu araç ile deneyebildim.Bu araç ile yaptıklarımı tek bir görsel ile adım adım anlatayım.

image
Facebook Graph API Explorer post' lar
  1. İlk olarak kullanıcının post' larını alacağımız için izinlerden "user_posts"u seçmemiz gerekiyor.
  2. Bundan sonra "Generate Acces Token" diyerek istediğimiz kullanıcı ile giriş yapabiliriz. Böylece bu kullanıcıya ait "access token" ı oluşacaktır. Bu "access token" daha sonra uygulamada kullanacağız.
  3. Ardından post' ları almak için kullanacağımız linki girebiliriz. Burada endpoint' imizin tamamı "me/posts?fields=message,permalink_url" oluyor. "fields" query-string' i ile post' ların message ve link bilgilerini almak istediğimizi beliriyoruz.
  4. Tabiki son olarak da "Submit" butonu ile istekte bulunuyoruz.

Console uygulmamda bu çıktıyı işleyecek döngünün içerisinde şöyle minik bir şablonum var.

media.data
            .Where(item => !string.IsNullOrEmpty(item.message))
            .Select(item => $"id: {item.id}\nurl: {item.permalink_url}\n\t{item.message}");
  • Burada api' den gelen dönüşün yapısından bahsedeyim. Yapı iki api için de kabaca aynı. "data" ve "paging" özelliklerinden oluşuyor. "data" da bir obje array' i ile post' lar oluyor. "paging" de de önceki veya sonraki liste için linkler oluyor. Ben sonraki liste için "paging.next" değerini kullandım. Bu değer ile "GET" isteğinde bulunarak bir stack yapısında olduğu gibi sıradaki listenin değerlerini alabiliyorsunuz.
  • Instagram API

    Buradaki işlem birkaç adımdan oluşuyor. Bu adımları Facebook dokümanından takip edebilirsiniz. Ben bu uygulamayı tek seferlik kullacağım için "Valid OAuth Redirect URIs" ile bahsedilen adresi "http://localhost/test" olarak tanımladım. Amacım sadece 4. adımdaki gibi test kullanıcısına ait code' u alabilmek.5. adımı da gerçekleştirdikten sonra "access_token" değerlerini uygulamaya göndermek üzere not alabiliriz.

    image
    Örnek bir uygulama çıktısı

    Yorumlar