2015-02-02 14 views
5

Kullanıcı doğrulama rozetinin Instagram API'si olup olmadığını kontrol etmenin herhangi bir yolu olup olmadığını bilmek ister misiniz?Instagram API: Kullanıcının doğrulanmış olup olmadığını kontrol edebilir miyim?

Kullanıcı doğrulanmışsa https://api.instagram.com/v1/users/ {user-id} öğesinin geri dönmediğini gördüm, ancak bir kullanıcı sayfasının kaynak kodunu görüntülediyseniz, bunun isminizin doğrulandığını görebildiğini görebilirsiniz. kullanıcının json yapısındaki değer.

Teşekkürler!

cevap

4

Tamam, bu harika bir cevap değil, aynı görevi nasıl gerçekleştirdiğim işte burada. Ben API bir kullanıcı adını öğrendikten sonra onların profil sayfasının kaynağına aşağıdaki regex yapın:

$response = file_get_contents('https://instagram.com/'.$username); 
if (preg_match('/"user":\{"username":"'.$username.'",.*?"isVerified":true\},"__path":".*?'.$username.'.*?"/s', $response) || preg_match('/<meta content=".*?official.*?account.*?" name="description" \/>/is', $response)) { 
    print "VERIFIED USER!"; 
} 

bu süper hacky ama API şu anda bir isVerified değer sağlamaz önce Dediğim gibi. Yapana kadar bu düzenli ifadeyi kullanıyorum. "IsVerified" ifadesini arar: başvuruda bulunduğunuz JSON yapısının gerçek kısmı. (ornek: https://instagram.com/taylorswift)

Ayrıca, meta içerik etiketinde "resmi hesap" varsa, bunun resmi olduğunu varsayarsak, ek bir kontrol ekledik. (örneğin: https://instagram.com/3doorsdown) Bu kontrol, 2014 yılında doğrulanmış hesaplar yapmaya başladığından ve henüz doğrulanmış bir rozet almayan birkaç ünlü olduğundan, bu kontrolü ekledik. Bazı parçaları almalı ama yanlış pozitiflere de çok iyi getirebilsin.

NOT: Instagram, sayfalarındaki JSON yapısını veya meta etiketlerini değiştirirse, bu nedenle kendi çözümünüzde kullanmak için bu çözüm kesilir. Doğrulanmış rozetler için az sayıda kullanıcı ismini kontrol etmek için sadece bir senaryoya ihtiyacımız vardı ve bu kadar çabuk geldim. En iyi çözüm, API'lerini her güncellediklerinde olacaktır.

İlgili konular