22

Tôi muốn làm điều gì đó giống như facepile bằng cách sử dụng biểu đồ api với biểu đồ mở 2 hành động: từ đối tượng tùy chỉnh và đối tượng tùy chỉnh những người bạn (sử dụng ứng dụng facebook của tôi) đã thực hiện hành động này trên đối tượng này.Truy xuất danh sách bạn bè đã thực hiện hành động tùy chỉnh trên đối tượng tùy chỉnh trong biểu đồ mở 2

Vấn đề là sử dụng FQL, tôi không thể truy vấn các đối tượng và hành động tùy chỉnh. . Sử dụng API đồ thị, tôi không thể tìm thấy một cách để giao với danh sách bạn bè của tôi với các đối tượng Tôi quan tâm đến

Điều tốt nhất tôi có thể làm là như sau bằng cách sử dụng chế độ hàng loạt của API đồ thị:

batch=[ 
    // First we get the list of friends that are using my facebook application 
    { "method": "GET", "relative_url": "fql?q=SELECT+uid+FROM+user+WHERE+uid+IN+(SELECT+uid1+FROM+friend+WHERE+uid2=me())+AND+is_app_user=1+LIMIT+0,49", "name": "friends"}, 
    // Then query each friend to get the list of objects that went through my namespace:testaction 
    { "method": "GET", "relative_url": "{result=friends:$.data.0.uid}/namespace:testaction" }, 
    { "method": "GET", "relative_url": "{result=friends:$.data.1.uid}/namespace:testaction" }, 
    ... 
    { "method": "GET", "relative_url": "{result=friends:$.data.49.uid}/namespace:testaction" } 
] 

đó là khá kém hiệu quả và không giải quyết hoàn toàn vấn đề của tôi kể từ khi:

  • tôi vẫn phải lọc các kết quả để có được chỉ một trong đó phù hợp với đối tượng tôi muốn
  • Nếu có al arge số đối tượng trong không gian tên: testaction, tôi phải đi qua phân trang, thực hiện thêm truy vấn (tôi cố gắng giảm thiểu số truy vấn)

Bạn có thấy cách nào tốt hơn không?

+0

Hãy thử sử dụng plugin Hoạt động trên Facebook với các hành động biểu đồ mở tùy chỉnh như tôi mô tả [đây] (http://stackoverflow.com/a/11769117/1342440) –

+0

Tình hình đã thay đổi hoặc chúng tôi vẫn phải sử dụng các yêu cầu theo đợt ? – Till

Trả lời

3

Đó là bây giờ có thể làm điều này với yêu cầu API một Graph:

GET https://graph.facebook.com/me/friends?limit=50&fields=name,namespace:testaction.limit(100) 

thấy field expansionupdates to the graph API.

+0

Chỉ vài ngày đến muộn để yêu cầu tiền thưởng của tôi - xin lỗi vì bạn nhưng cảm ơn rất nhiều vì đã cho chúng tôi biết. – Till

+0

Chỉ cần hiển thị mức độ biến động của FB API. Hy vọng rằng điều này sẽ không bị kéo dài hoặc sửa đổi trong tương lai. – derickito

6

Điều này có thể không chính xác những gì bạn đang tìm kiếm, nhưng với thực tế là facebook (AFAIK) không cung cấp (và có thể sẽ không bao giờ cung cấp) khả năng thực hiện việc này. Tôi nghĩ bạn nên lưu trữ thông tin một mình và sau đó truy vấn dữ liệu từ cơ sở dữ liệu của riêng bạn. Nó sẽ giống như những gì bạn đang làm trong câu hỏi của bạn, nhưng bạn có thể tối ưu hóa nó vì nó là cơ sở dữ liệu của bạn.

Tôi chắc chắn bạn đã nghĩ về điều này, nhưng ai đó phải nói điều đó.

+0

Tôi thực sự chỉ muốn sử dụng API facebook. Tôi hiện đang sao chép dữ liệu và muốn di chuyển sang giải pháp toàn-facebook-api. – Scharron

+2

Như tôi đã nói trong câu trả lời của tôi "điều này có lẽ không chính xác những gì bạn đang tìm kiếm", nhưng nếu bạn đang tìm kiếm một giải pháp api đầy đủ facebook thì bạn bị giới hạn ở những gì facebook sẽ cho phép bạn làm. Không có cách nào xung quanh việc này dù bạn có ước gì cho điều đó. FQL không cho phép bạn làm điều đó, API không cho phép bạn làm điều đó. Hoặc bạn trở nên phụ thuộc vào facebook và chỉ làm những gì họ cho phép bạn làm hoặc bạn sao chép dữ liệu và làm bất cứ điều gì bạn muốn làm. Nó đơn giản, không có giải pháp ẩn. Một lần nữa, có lẽ không phải những gì bạn muốn nghe. – derickito

3

Nếu câu trả lời derickito cho là chưa đủ, bạn nên khám phá ứng dụng của mình trên danh sách trắng Facebook (hay trở thành đối tác) để có được một số API đồ thị riêng tư, nơi chức năng này có thể tồn tại, nhưng không có sẵn ứng dụng "bình thường" bị mắc kẹt bằng cách sử dụng API đồ thị công khai.