2011-10-12 20 views
13

Resmin yorumunu almak için grafik api kullanıyorum, ancak önce zaman oluşturarak sonuçları sıralayıp en son verilere geri dönmek istiyorum. Sql deyimine benzer 'create_time desc' sırasına göre, böyle bir parametrenin olup olmadığını bilmiyorum. Şu ofset ve son verilere erişim sınırı değil, aynı zamanda yorumların toplam sayısını bilmek için kullanılan facebook grafik api yorum listesi sıralama, 'orderby = desc' gibi?

,

pagesize = 25; 
offset = comments.count - pagesize; 
limit = 25; 

url = "https://graph.facebook.com/" + object_id + "/ Yorumlar? access_token =" + access_token + "& limit =" + limit + "& offset =" + limit;

Sonraki sayfa:

offset -= 25 

ama sayısal bir comments.ount bazen

doğru değildir ve istek URL sonucu eşleşmiyor bazen geri dönmek için

Çok iyi bir çözümün olup olmadığı

Ya da biz yanlış şekilde (‘limit’ ve ‘ofset" Parametresi) düzeltildi!


Cevabınız için teşekkür ederiz.

"Grafik API'sı" önbellek var mı?

i parametreleri, bir mesaj ve 46 comments.requests url sonrası ayarlayın: offset

= 0 & sınır = 1 Sonra

son yorumun dönmelidir (en son bir), Bir yorumun ortasına gerçek dönüş ve birkaç kez test ettim, ofsetini ve limitini ayarlayın. iade edilen sonuçlara göre, ortadaki son açıklama ı limit değeri 'comment.count' büyükse ayarlarsanız

, döndürülen veri hepsi, resmi web sitesi ve

tutarlı facebook olduğunu

Önbellek nedeni nedir?

Tekrar teşekkürler ~

+0

Neden FQL kullanmıyorsunuz? Bu durumda daha esnek görünüyor. –

+0

fql ~ ** SELECT object_id, text, time FROM comment WHERE object_id = 'object_id' siparişi zamana göre desc ** Gerçekten çok esnek ama "api grafiği" değil mi? Sadece kullanabilirim ~. 'fql' bir "Grafik API" mı? Bu çok güzel olurdu! – mast

+0

grafik API WHERE ve ORDER BY var, bu durumda FQL daha esnek görünüyor. FQL, grafik nesneleri ve bağlantılar üzerinde sorgulamalar gerçekleştirdiği için bir grafik özelliğidir. –

cevap

3

Grafik API'si en son nesneleri ilk önce döndürür.

Facebook, getirilen verileri filtrelemek için 2 anahtar sözcük sağlar.ofset pozisyonda Yani

son almak için gelen kayıtların İade "sınır" numarası "x" yorum bir nesne için yayınlanmıştır:

  1. Limiti:
  2. Ofset
  3. son kayıtların İade "sınır" numara

    https://graph.facebook.com/[OBJECTID]?limit=[X] & = 0

    ofset

    (bilge sayfa)

    https://graph.facebook.com/[OBJECTID]?limit=[X] & offset = [X * PAGENo]

    yanındaki "X" bir yorum almak için

    Cevabın sizin için yeterince açık olmasını umuyoruz.

+0

Cevabınız için teşekkür ederiz. "Grafik API" ** Önbellek ** varlığını? – mast

+1

Bu hala geçerli mi? * ofset = 0 * en eski yoruma atıfta bulunurken * ofset = 1 ... n * benim için daha sonra geri gönderilir! – dbau

+0

Güncellenmiş yanıtımı görün. Facebook GRAPH API, varsayılan olarak ilk olarak en son kayıtları alır ve aynı normal Facebook web sitesinde de geçerlidir. Yani sıfırdan sıfır en yeni "LIMIT" kayıt sayısını döndürür –

5

@dbau - Hala FQL kullanarak daha iyi durumdasınız. Tecrübemde, çok basit bir arama yapmıyorsanız, Grafik API çağrısı üzerinden aldığınız şey üzerinde çok az kontrol sahibi olursunuz.

Neden FQL kullanmak istemiyorsunuz? FQL, Grafik API'sinin bir uç noktasıdır. Yine de sadece FQL ile iade edilebilecek bazı veriler var.

Bu, aradığınız sonucu alacaktır. Sorgu, kodlanmış URL olmalıdır. Açıklık için düz metinde bıraktım. Facebook sorgu çalıştırılır sonra access_token sahibine tarafından görülmez tüm öğelere filtre çünkü

https://graph.facebook.com/fql?access_token=[TOKEN]&q= 
    SELECT id, fromid, text, time, likes, user_likes FROM comment 
     WHERE object_id = [OBJECT_ID] ORDER BY time DESC LIMIT 0,[N] 

Sen [N] comments her zaman iade alamadım bulabilirsiniz. LIMIT'i yükseltebilir ve iade edilen fazla sonuçları filtreleyebilirsiniz ya da bir kullanıcı access_token kullanıyorsanız, WHERE maddesine AND can_like = TRUE ekleyebilir ve mevcut kullanıcı için görünür durumda olan [N] iletinin döndüğünü garanti edebilirsiniz.

İlgili konular