2012-03-18 33 views
13

Tôi đã bắt đầu bằng cách đọc Displaying Facebook posts to non-Facebook users là một số cách sử dụng nhưng tôi không thể tin rằng việc nhận nguồn cấp dữ liệu công khai từ Facebook rất khó khăn.Nhận nguồn cấp dữ liệu trên tường từ trang Facebook công khai bằng cách sử dụng API Graph - có thực sự phức tạp không?

Trang tôi muốn nguồn cấp dữ liệu từ công khai, bạn không cần phải đăng nhập để vào trang đó.

Tôi có đúng là giả sử rằng tôi cần access_token để truy cập thông tin này, cố gắng truy cập URL mà không dẫn đến lỗi OAuth.

Vì vậy, dòng chảy nên được như thế này (ồ ạt, quá phức tạp):

  1. Authenticate sử dụng người dùng (những gì nếu người dùng không phải là trên Facebook?)
  2. Một số phức tạp OAuth vô nghĩa - chỉ để đọc các thức ăn, tôi thậm chí không muốn có một nút thích hoặc gửi vào tường chức năng
  3. Lấy thức ăn sử dụng một yêu cầu PHP đến URL chính xác với access_token của người dùng
  4. Render thức ăn

Giả sử người dùng không có trên Facebook, bạn làm gì, sử dụng ứng dụng chung để nhận nguồn cấp dữ liệu?

  1. hardcode một yêu cầu auth lên Facebook sử dụng ID ứng dụng chung của tôi và bí mật
  2. Một số OAuth phức tạp vô nghĩa
  3. Lấy thức ăn sử dụng một yêu cầu PHP đến URL chính xác với access_token của ứng dụng
  4. Render thức ăn
  5. Ồ không, auth đã hết hạn, xác thực lại và chụp access_token mới này để sử dụng trong các yêu cầu trong tương lai.

Điều này có vẻ thực sự phức tạp vì không có lý do nào khác ngoài Facebook muốn biết mọi thứ đang diễn ra, sẽ dễ dàng hơn khi thực hiện cURL và xóa nội dung khỏi URL công khai bằng XPath.

Bất kỳ trợ giúp nào về điều này đều tuyệt vời.

Cảm ơn, Jake

EDIT

Một chỉnh sửa để hiển thị này không phải là một bản sao chính xác.

Tôi đã làm việc này với access_token tại chỗ, nhưng giờ không thành công, mã thông báo đã hết hạn và tôi không thể sử dụng nó để lấy thông tin từ tường công cộng nữa.

Tôi đã cố gắng kéo dài ngày hết hạn của mã thông báo này bằng cách sử dụng các phương pháp được đề cập trong các bài đăng khác nhưng điều này không hiệu quả và hết hạn không được gia hạn - chúng tôi hiện đang ở đây, với mã thông báo không hợp lệ và không còn tiếp tục.

Dường như quy trình thủ công phải phê duyệt yêu cầu OAuth có nghĩa là không thể lập trình được nguồn cấp dữ liệu của trang công khai.

+1

Kiểm tra câu trả lời của tôi cho http://facebook.stackoverflow.com/questions/9663700/how-to-show-facebook-feed-messages-from-my-site/9663836#9663836 và tôi tin rằng nó giải quyết được mối quan tâm của bạn. – Shreeni

+2

Cảm ơn Shreeni - đây là điều tôi sợ - nó quá phức tạp. Duy trì proxy chỉ là điên rồ. Tôi đang cố gắng để có được điều này để làm việc ngay bây giờ bằng cách truy cập các URL, cố gắng để có được một acccess_token từ chung của tôi hoặc thậm chí tài khoản của riêng tôi không thành công. Toàn bộ điều này là một mớ hỗn độn phải trung thực. –

+0

Hi Shreeni, tôi sẽ chỉnh sửa để cập nhật nơi tôi đang ở với điều này. –

Trả lời

4

Hai năm sau, bạn lập trình có thể làm điều này với một ứng dụng Facebook (một Ví dụ sử dụng PHP và Slim): https://developers.facebook.com/apps/

$base_api="https://graph.facebook.com/"; 
$client_id="XXXXXX"; 
$app_secret="XXXXXX"; 

//get a profile feed (can be from a page, user, event, group) 
$app->get('/feed/:profileid/since/:start_date', function ($profile_id,$start_date) { 

    $start_time=date('m/d/Y h:i:s',$start_date); 

    $request = new FacebookRequest(
     getSession(), 
     'GET', 
     '/'.$profile_id.'/feed?since='.$start_time 
    ); 

    $response = $request->execute(); 
    $graphObject = $response->getGraphObject(); 

    //do something with $graphObject 

}); 


function getSession(){ 
    $session = new FacebookSession(getAccessToken()); 
    return $session; 
} 


function getAccessToken(){ 
    global $base_api, $client_id, $app_secret; 
    $url=$base_api."oauth/access_token?client_id=".$client_id."&client_secret=".$app_secret."&grant_type=client_credentials"; 
    $str = file_get_contents($url); 
    $token = str_replace ("access_token=" , "" , $str); 
    return $token; 
} 
0

Tôi có một số thành công với việc đọc trong nguồn cấp dữ liệu trực tiếp mà không cần mã thông báo, v.v. (sử dụng magpie, simplepie hoặc querypath hoặc tương tự).

http://www.facebook.com/feeds/page.php?format=rss20&id= ........ http://www.facebook.com/feeds/page.php?format=atom10&id= ........

tìm thấy trên: http://ahrengot.com/tutorials/facebook-rss-feed/

+1

Không được chấp nhận vì lợi ích của API Facebook. Tệ quá, vì đây là một cách đơn giản để lấy thông tin mà tôi cần! –

0

Facebook đã thay đổi như thế nào để lấy thức ăn một cộng đồng Facebook của trang kể từ khi câu trả lời khác được đăng.

Kiểm tra answer/question của tôi. Nó không phải là PHP, nhưng nó cung cấp URLs và quá trình bạn cần.

Các vấn đề liên quan