2011-01-07 7 views
5

Tôi cố gắng tìm nạp nguồn cấp dữ liệu của người dùng qua biểu đồ api từ ứng dụng Android của tôi. Nó thường hoạt động nhưng một số nguồn cấp dữ liệu mà tôi có thể nhìn thấy trên tường bị thiếu trong phản hồi json.API biểu đồ Facebook: nguồn cấp dữ liệu bị thiếu trong phản hồi json

Tôi gọi url http://graph.facebook.com/someUserId/feed, bằng cách sử dụng phương pháp SDK Android của Android, vì vậy mã thông báo truy cập sẽ được cung cấp tự động, nhưng nó thực sự không liên quan tôi nghĩ trong trường hợp của tôi. Tuy nhiên, người dùng ứng dụng của tôi được xác thực qua OAuth.

Tôi đã kiểm tra như sau:

  • tất cả thức ăn của người dùng có thể nhìn thấy tất cả mọi người/công cộng (thiết lập trong cài đặt bảo mật)
  • phản ứng json không được lưu trữ bởi trình duyệt của tôi
  • Tôi biết phân trang, nhưng đây không phải là vấn đề. Vấn đề không phải là tôi không nhận được nguồn cấp dữ liệu cũ nhất nhưng một số nguồn cấp dữ liệu chỉ thiếu ở giữa.
  • Tôi đã đăng ký người dùng facebook mới không được kết nối với người dùng tôi muốn truy xuất nguồn cấp dữ liệu trên tường và khi tôi mở tường tương ứng, tôi thấy tất cả các nguồn cấp dữ liệu ở đó, như mong đợi, vì chúng đều công khai với mọi người . Tuy nhiên, khi tôi mở cùng một url json url unter http://graph.facebook.com/someUserId/feed, một số nguồn cấp dữ liệu bị thiếu.

Đây là ví dụ về sự cố - vì tất cả bài đăng của tôi là công khai, tôi chỉ có thể gọi trực tiếp url json trong trình duyệt để thực hiện kiểm tra.

Tôi muốn để có được bức tường feeds từ người dùng: http://www.facebook.com/mathias.lin

Screenshot1: lưu ý 3 đăng được đánh dấu, bài đăng bởi bản thân mình

alt text

và đây phản ứng json, như bạn có thể nhìn thấy , bài viết trên tường thứ nhất và thứ 3 được bao gồm trong json, nhưng bài đăng thứ hai thì không. Tại sao?

Url json liên quan là: http://graph.facebook.com/mathias.lin/feed

alt text

Tôi nhận được thức ăn 'mất tích' khi tôi thêm một access_token để url - nhưng tại sao? Nguồn cấp dữ liệu đã đăng có cài đặt bảo mật cho 'mọi người' ?!

Đây là thức ăn thiếu mà tôi nhận được khi sử dụng access_token:

{"id":"504063796_485195138796","from":{"name":"Mathias Lin","id":"504063796"},"message":"Photo test upload from Android","picture":"http:\/\/photos-e.ak.fbcdn.net\/hphotos-ak-snc6\/hs021.snc6\/165194_485195123796_504063796_6062399_1841907_s.jpg","link":"http:\/\/www.facebook.com\/photo.php?fbid=485195123796&set=a.485195118796.256450.504063796","name":"Torres Photos","icon":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/yz\/r\/StEh3RhPvjk.gif","actions":[{"name":"Comment","link":"http:\/\/www.facebook.com\/504063796\/posts\/485195138796"},{"name":"Like","link":"http:\/\/www.facebook.com\/504063796\/posts\/485195138796"}],"privacy":{"description":"Everyone","value":"EVERYONE"},"type":"photo","created_time":"2011-01-06T05:10:43+0000","updated_time":"2011-01-06T09:00:23+0000","likes":6,"comments":{"data":[{"id":"504063796_485195138796_3607414","from":{"name":"Mathias Lin","id":"504063796"},"message":"Awesome, photo upload now works as well. Not so much fun working with the Facebook SDK for Android, would have expected more functionality beyond that just very very simple graph api wrapper. But need to be considered that the android sdk development was part of an internship - but since it's it's open source, it can luckily be modified. Which has to be done due to some bugs (mixing up the bundle parameters for a post, getString, getByteArray). Api documentation could be improved.","created_time":"2011-01-06T05:26:04+0000"},{"id":"504063796_485195138796_3608020","from":{"name":"Renate Hermanns","id":"628810487"},"message":"Wow 
, how fast time passes by. Your daughter is nearly grown up ;-).","created_time":"2011-01-06T09:00:23+0000"}],"count":2},"attribution":"Torres"} 

Tôi đã gửi câu hỏi đến diễn đàn FB dev, chờ câu trả lời.

chủ đề liên quan:

http://forum.developers.facebook.net/viewtopic.php?id=81365

http://forum.developers.facebook.net/viewtopic.php?id=75984

Facebook Graph API "/userid/feed" returning Blank

+1

Tôi nghĩ rằng bạn có thể tìm thấy câu trả lời này hữu ích - http://stackoverflow.com/questions/4617606/facebook-graph-api- không-return-all-feed-items-trên-facebook-trang/4622608 # 4622608. Đó là thực tế cùng một câu hỏi. – Bartek

+0

Cảm ơn bạn đã liên kết! Nó thực sự thú vị, mặc dù trường hợp của tôi là hơi khác nhau, bởi vì tất cả các bài viết bao gồm. người mất tích là tất cả từ tôi và trên bức tường của riêng tôi. Tôi không thấy những gì làm cho bài viết 'mất tích' khác với những người khác. Trong trường hợp bạn đã liên kết, tất cả các bài đăng của riêng mình bởi realplayer được hiển thị, tất cả ngoại quốc đều bị ẩn. Nhưng trong trường hợp của tôi, ngay cả bài viết của riêng tôi không được hiển thị mà không có access_token. –

+0

Ah, xấu của tôi, xin lỗi - không nhận thấy rằng bài đăng bị thiếu cũng do bạn tạo. Thực sự kỳ lạ. Một lưu ý khác - tôi đã nhìn vào bức tường của bạn và điều tôi nhận thấy là bức ảnh không thực sự là bài đăng - khi bạn nhấp vào thời gian bên dưới mỗi bài đăng, bạn có thể tìm thấy ID của nó, trong khi liên kết bên dưới ảnh sẽ đưa bạn trực tiếp vào album. Sau khi phân tích một vài bức tường có vẻ như với tôi rằng chỉ những bức ảnh đang gây ra vấn đề bạn đang gặp phải – Bartek

Trả lời

4

cách tiếp cận của bạn là đúng, tôi đã nhìn thấy các JSON và có nó còn thiếu một thứ hai, tôi nghĩ đó là ứng dụng tải lên mẫu adroid, hãy thử kiểm tra cài đặt ứng dụng cho ứng dụng này. Hoặc Nếu bạn đang cố gắng để lấy FQL tường là một cách tốt hơn

SELECT post_id, actor_id, target_id, message FROM stream WHERE source_id in (SELECT target_id FROM connection WHERE source_id=<uid> AND is_following=1) AND is_hidden = 0 
+0

Có, bài đăng đã được thực hiện thông qua ứng dụng Android của tôi, nhưng tôi không chắc chắn - tôi nên kiểm tra cài đặt ứng dụng nào? Tôi không tìm thấy bất kỳ điều gì liên quan đến cài đặt bảo mật hoặc cho dù trong/loại trừ nguồn cấp dữ liệu đã được đăng qua ứng dụng của tôi hay chưa. Ok, tôi cũng sẽ xem xét FQL, tiếc là điều này cần một số thực hiện tùy chỉnh sau đó một lần nữa, kể từ khi Android SDK của Facebook sử dụng đồ thị thường xuyên api theo mặc định. –

+0

btw: và album nơi ảnh đang được đăng (tự động tạo bởi FB api) được đặt thành bảo mật = Mọi người –

+1

Với FQL Tôi nhận được các nguồn cấp dữ liệu bị bỏ qua bởi đồ thị thông thường api. Cảm ơn gợi ý. –

0

Tôi đã trải qua điều này, cách Facebook đang phân loại quyền của họ là bằng cách nào đó gây hiểu nhầm, ví dụ Publicly available có thể âm thanh như Available to everyone on Facebook nhưng apperantly nó không phải.

Bây giờ trong trường hợp của bạn, nếu bạn đã xác thực người dùng, sau đó hãy thử sử dụng:

/me/feed 

Tôi đoán đây là trường hợp duy nhất mà access_token là không cần thiết trong URL.

+0

/me/feed sẽ chỉ trả về các bài đăng của riêng tôi, tôi muốn sử dụng bất kỳ userId/nguồn cấp dữ liệu nào. Những gì tôi không hoàn toàn hiểu là một số nguồn cấp dữ liệu được trả lại và một số không phải khi tôi không sử dụng bất kỳ access_token, mặc dù tất cả chúng đều có cùng một cài đặt bảo mật. Nhưng tôi/nguồn cấp dữ liệu không phải là trường hợp duy nhất mà bạn không cần mã thông báo truy cập - chỉ cần thử mở http://graph.facebook.com/mathias.lin/feed trong trình duyệt - bạn sẽ nhận được nguồn cấp dữ liệu của tôi (với một số mất tích, không rõ lý do), phải không? –

+0

không, tôi đang nói ... nếu bạn làm theo quy trình xác thực và có phiên hợp lệ ... liệu '/ me/feed' có trả về tất cả các nguồn cấp dữ liệu không? Tôi cho rằng nó nên, đây là lý do tại sao * Tôi đoán * '/ user_id/feed? Access_token = xxx' ='/me/feed' – ifaour

+0

và bằng * không cần thiết * Tôi muốn truy cập đầy đủ mà không có trong URL. – ifaour

0

Tôi gặp sự cố tương tự. Nhưng đối với tôi, vấn đề liên quan đến việc không đặt phạm vi đúng vào lần đăng nhập đầu tiên (để cho phép ứng dụng). Tôi đăng một câu hỏi tương tự và có câu trả lời mà làm việc cho tôi ở đây:

Facebook API how to get all wall items