2013-03-12 37 views
7

Tôi đang thực hiện cuộc gọi API biểu đồ Facebook cho "tôi/nhà riêng" để nhận nguồn cấp dữ liệu tin tức của người dùng. Như mọi người đều biết, URL bạn nhận được trong trường "hình ảnh" là một bức ảnh có độ phân giải thấp không có vẻ tốt ở bất kỳ thứ gì trên 100x100. Tôi biết bạn có thể đưa URL đến hình ảnh có độ phân giải cao bằng cách thực hiện một cuộc gọi biểu đồ khác cho "object_id" và sử dụng trường "nguồn" trong kết quả đó.Hình ảnh có độ phân giải cao trên biểu đồ Facebook

Nhưng tôi đã xem xét các URL và nghĩ rằng có thể có một cách để biến đổi một URL khác mà không cần phải thực hiện một cuộc gọi đồ thị khác. Hoặc là, hoặc xây dựng một độ phân giải cao từ dữ liệu hiện có trong các lĩnh vực khác. Ví dụ: URL đầu tiên là URL có độ phân giải thấp và URL thứ hai là độ phân giải nguồn.

http://photos-d.ak.fbcdn.net/hphotos-ak-ash4/297313_10152643117455790_610095553_s.jpg 
http://sphotos-b.xx.fbcdn.net/hphotos-ash4/297313_10152643117455790_610095553_n.jpg 

Dường như con số này (something I don't know)_("object_id")_(something else I don't know)

Có ai có kinh nghiệm với cố gắng thay đổi ra các URL trong khi vẫn giữ phần số ở giữa? Có những biến thể thường có thể gây ra vấn đề về regex không?

EDIT: Đây là mã tôi đang sử dụng.

String objectId = null; 
if (jsonObject.has("object_id")) { 
    objectId = jsonObject.getString("object_id"); 
} 
String postPhoto = "http://graph.facebook.com/" + objectId + "/picture"; 

Kiểm tra xem bài đăng có phải là một bức ảnh sớm hơn một chút trong mã không, vì vậy sẽ luôn chạy các dòng này cho loại "ảnh".

Trả lời

9

me/home - biểu đồ api có một số trường có tên là "object_id" and "type". Nếu loại là "ảnh" thì bạn sẽ có giá trị object_id này. Bằng cách sử dụng id đối tượng này và thực hiện một cuộc gọi api đồ thị khác sau đó bạn sẽ nhận được một objecty gọi là "images". Đối tượng này có một số tùy chọn (kích thước khác nhau).

HOẶC

Sử dụng đối tượng id như dưới đây và nhận được một album phiên bản có kích thước của một bức ảnh. và các loại được hỗ trợ cho cuộc gọi này là "hình thu nhỏ, bình thường, album".

https://graph.facebook.com/{object-id-from-feed}/picture?type=normal 

và cũng kiểm link dưới Examples of Supported Objects phần.

+0

Cảm ơn. Giải pháp đầu tiên của bạn là những gì tôi đã cố gắng để tránh (làm cho hai cuộc gọi đồ thị, cái khác). Người thứ hai có thể làm việc miễn là chất lượng hình ảnh đủ cao. Tôi sẽ phải thử nó tối nay. – Wenger

+0

Tôi đã thử nó không hoạt động vì vậy tôi đã loại bỏ việc mở rộng "? Type = normal". Làm điều đó đã tải hình ảnh dấu chấm hỏi Facebook của cổ phiếu cho phần lớn tất cả các hình ảnh ngoại trừ một cặp thực sự đã tải đúng hình ảnh. – Wenger

+0

xin vui lòng chia sẻ mã của bạn, nó giúp để tìm hiểu whats going. – thomasbabuj

0

của một phản ứng muộn nhưng nhưng tôi đã tìm thấy một cách tiếp cận tốt hơn

Nếu bạn đã có một địa chỉ bằng cách sử dụng đồ thị api như thế này

https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-xaf1/t1.0-9/s130x130/10501892_701590943222768_782659935906208443_n.png 

sau đó chỉ cần thay thế 130x130 đến một nghị quyết hợp lệ

https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-xaf1/t1.0-9/s480x480/10501892_701590943222768_782659935906208443_n.png 

và bạn sẽ có thể nhận được hình ảnh có độ phân giải cao

độ phân giải hình ảnh hợp lệ có thể được tìm thấy từ ví dụ này gọi

http://graph.facebook.com/701586786556517

701586786556517 = object_id từ Facebook graph API gọi

Hope this helps một ai đó.

+0

Cảm ơn. Tôi thực sự tìm thấy một cách tốt hơn. Nếu URL có '_s.jpg', hãy thay thế bằng' _n.jpg'. Nếu nó đã có '_n.jpg', phần lớn thời gian nó vẫn sẽ có độ phân giải thấp. Trong trường hợp đó chỉ cần loại bỏ '/ 130x130' và bạn nhận được độ phân giải đầy đủ hầu như luôn luôn. – Wenger

+0

Có bạn đúng, nhưng cách tiếp cận của tôi cũng cung cấp cho bạn sự linh hoạt hơn –

+0

Có. Tôi đã tìm thấy một số có giá trị khác với 's130x130', chẳng hạn như' s50x50' hoặc 'p130x130'. Vì vậy, tôi đã sử dụng một regex để loại bỏ điều đó. Một lần nữa, đây là tất cả để tránh phải thực hiện một cuộc gọi đồ thị khác bằng cách sử dụng 'object_id'. – Wenger

0

Tất cả bạn cần làm là (Graph API):

http://graph.facebook.com/me?fields=picture.height(961) 
// all any height which u want 

hoặc (đối với người sử dụng khác)

http://graph.facebook.com/{user_id}?fields=picture.height(961) 
// replace {user_id} with the user id you want 
+0

bạn có thể liên kết tài liệu này không? – felixfbecker

0

Đối với một số lý do không ai trong số các câu trả lời cho câu hỏi này làm việc, tuy nhiên, một người trên diễn đàn khác được đăng để sử dụng "full_picture" trong các thông số lĩnh vực và nó hoạt động như một sự quyến rũ. Tôi không tìm thấy điều này trong bất kỳ tài liệu ... trừ khi tôi chỉ cần bỏ qua nó?

OP https://www.quora.com/How-do-I-get-the-full-size-of-image-in-a-Facebook-post-using-Graph-API

+0

Liên kết bên ngoài có thể cung cấp câu trả lời thực và chính xác nhưng bạn phải đặt mã chính ở đây. Nếu trong tương lai liên kết đó bị hỏng phần còn lại của người dùng sẽ có một câu trả lời vô dụng – acostela

+0

Câu trả lời từ bài Quora hoạt động như một nét duyên dáng là http://graph.facebook.com//picture? Height = 1080 & width = 1080 1080 có thể được thay đổi thành bất kỳ kích thước nào bạn muốn –

0

Không có ở trên làm việc cho tôi, xin đính kèm lĩnh vực giải quyết nó

&fields=picture.type(large),attachments 
Các vấn đề liên quan