2010-10-11 43 views
8

Tôi cần đồng bộ hóa các sự kiện từ trang CMS tới trang cụ thể của Facebook. Tôi đang cố tạo một sự kiện cho trang đã tạo của mình nhưng vẫn không có kết quả. Tôi chỉ có thể tạo các sự kiện, liên quan đến người dùng, nhưng không phải để trang. Mã sử ​​dụng Facebook PHP-SDK.Tạo sự kiện trên Facebook cho trang cụ thể với FB Graph API

$page_id = '31337'; 
$page = $facebook->api("/{$page_id}"); 
$event_data = array(
    'name'   => 'Event: ' . date("H:m:s"), 
    'start_time' => time() + 60*60, 
    'end_time'  => time() + 60*60*2, 
    'owner'   => $page 
); 
$post = $facebook->api("/{$page_id}/events", 'POST', $event_data); 

Sau khi thực hiện đoạn mã này, sự kiện được tạo nhưng như tôi đã nói trước khi nó thuộc về người dùng mặc dù 'chủ sở hữu' trong trang dữ liệu nhất định. Ứng dụng của tôi có quyền quản lý_pages, create_event và publish_stream. Những gì tôi đang thiếu?

Giải pháp

Tại "OLD REST API" tài liệu tôi đã phát hiện ra rằng "Graph API mới" vẫn cần tham số page_id. Vì vậy, biến $ event_data phải như sau:

$event_data = array(
    'name'   => 'Event: ' . date("H:m:s"), 
    'start_time' => time() + 60*60, 
    'end_time'  => time() + 60*60*2, 
    'page_id'  => $page['id] 
); 
+0

Cảm ơn mate! Bạn vừa giúp tôi! :) –

Trả lời

3

«Tạo sự kiện thay mặt cho người dùng nếu ứng dụng có khóa phiên hoạt động cho người dùng đó; Nếu không, nó sẽ tạo sự kiện thay mặt cho ứng dụng. »- Source

Điều này có trả lời câu hỏi của bạn không?

+0

Thx để trả lời, nhưng thực sự thì không. Khi người dùng chưa đăng nhập, sự kiện được tạo tại trang của ứng dụng. Nhưng không phải ở trang cụ thể, tôi có id nào. – Pawka

+4

Nhưng trong liên kết đã cho, tôi đã tìm thấy giải pháp: "Đối số page_id có thể được sử dụng để tạo sự kiện cho các nhóm và Trang." Thật kỳ lạ khi tài liệu "API đồ thị mới" thiếu thông tin về tham số page_id được mô tả tại "API REST cũ". – Pawka

+1

Tuyệt vời sau đó :) Tài liệu của Facebook là xa phong nha, như bạn có thể biết bây giờ ... –

0

Thú vị- trải nghiệm của tôi hoàn toàn ngược lại. Tôi đã thử tạo sự kiện với thông số page_id và nhận được Lỗi Quyền. Đã xóa page_id và nó hoạt động tốt. Bí quyết là sử dụng mã thông báo truy cập ứng dụng thay vì sử dụng mã thông báo người dùng.

+0

Bạn phải thiết lập danh sách các quyền truy cập vào ứng dụng của bạn. http://developers.facebook.com/docs/authentication/permissions Quyền 'manage_pages' thực sự là những gì bạn cần. – Pawka

+0

Không phải như vậy - các trang của tôi được tạo bởi ứng dụng của tôi chứ không phải là người dùng, do đó không có quyền managed_pages liên quan. Vì một số lý do, việc chỉ định page_id đã khiến cho cuộc gọi API thất bại, việc xóa nó khiến nó hoạt động tốt. – Alastair

1

Bạn cần chuyển mã thông báo truy cập của trang được quản lý mà bạn có thể nhận được từ graph.facebook.com/me/account (tất nhiên, chuyển mã thông báo truy cập của bạn để nhận danh sách các trang người hâm mộ bạn quản lý). Bạn sẽ thấy có một danh sách các mã thông báo truy cập cho từng trang fan của bạn, sử dụng chúng để tạo sự kiện hoặc đăng lên trang fanpage của bạn.

0

Đặt access_token vào trang trước khi thực hiện bài đăng. Đảm bảo rằng ứng dụng của bạn có quyền "manage_pages" để ứng dụng này hoạt động.

Như thế này:

$page = $fbApi->api('/'.<page_id>,'GET',array('fields'=> 'access_token')); 
$fbApi->setAccessToken($page['access_token']); 
Các vấn đề liên quan