2010-01-19 53 views
10

tôi có thể cập nhật trạng thái trên tường PROFILE tôi sử dụng mã này:ủy quyền một Facebook Fan Page cho Cập nhật trạng thái

require_once 'facebook-platform/php/facebook.php'; 
$facebook = new Facebook('APP API KEY','APP SECRET KEY'); 
$user_id = 'MY USER ID'; 
$facebook->api_client->users_setStatus('This is a new status'); 

... sau khi cấp phép sử dụng địa chỉ này: http://facebook.com/authorize.php?api_key=MYAPPAPIKEY&v=1.0&ext_perm=publish_stream

này mã, tuy nhiên, không hoạt động để cập nhật trạng thái trên Facebook PAGE Wall của tôi. Có các tham số bổ sung nào mà tôi có thể thêm vào url authorize.php để chỉ định cấp quyền cho PAGE chứ không phải chỉ tiểu sử của tôi không?

Hoặc, có cách nào tốt hơn để đăng nội dung cập nhật lên Trang của người hâm mộ không?

Cảm ơn!

+0

Có thể bạn phải ủy quyền ứng dụng cho trang của mình trước tiên. Bạn có thể kiểm tra phản hồi từ truy vấn REST. Nếu nó phản hồi với bạn bằng 401/403 thì ứng dụng sẽ không được phép cập nhật hồ sơ. – funwhilelost

Trả lời

21

Tôi đã giải quyết sự cố bằng cách tham khảo Facebook desktop application documentation (mặc dù đây là ứng dụng web).

đầu tiên tôi đã phải cho phép truy cập ẩn với url này (thay thế 'MYAPIKEY'): http://www.facebook.com/login.php?api_key=MYAPIKEY&connect_display=popup&v=1.0&next=http://www.facebook.com/connect/login_success.html&cancel_url=http://www.facebook.com/connect/login_failure.html&fbconnect=true&return_session=true&session_key_only=true&req_perms=read_stream,publish_stream,offline_access

Sau đó, tôi cần phải cấp 'publish_stream' quyền truy cập vào TRANG với url này (thay thế 'MYAPIKEY' và ' THEPAGEID '): http://www.facebook.com/connect/prompt_permissions.php?api_key=MYAPIKEY&v=1.0&next=http://www.facebook.com/connect/login_success.html?xxRESULTTOKENxx&display=popup&ext_perm=publish_stream&enable_profile_selector=1&profile_selector_ids=THEPAGEID

tôi sau đó có thể sử dụng đoạn mã sau để xuất bản vào tường Fan Page:

require_once 'facebook-platform/php/facebook.php'; 
$facebook = new Facebook(MYAPIKEY, MYAPISECRET); 
try{ 
    $facebook->api_client->stream_publish('INSERT_STATUS_HERE',null,null,null,'THEPAGEID'); 
}catch(Exception $o){ 
    print_r($o); 
} 
+2

Chúa ơi, bạn thật tuyệt vời. Tôi đã đốt bộ não của tôi cố gắng tìm ra cách cấp quyền cho trang ... Bạn là người hùng của tôi –

+0

Tôi đã thử làm việc này nhưng tôi bị lỗi FATAL (Lỗi nghiêm trọng: Gọi tới hàm thành viên stream_publish() trên một đối tượng không trong ...). Tôi đã cấp quyền ngoại tuyến và quyền publish_stream. Tôi đang sử dụng cùng một mã. – noobcode

+0

Tuyệt vời. Rất hữu ích, cảm ơn! Tôi đã có thể đăng trên tường trang của mình. Thật không may, tôi là người duy nhất có thể xem bài đăng của tôi, điều này không thực sự hữu ích. Khi người khác xem tường của trang, bài đăng tôi đã tạo bằng API không hiển thị. Có ai có vấn đề này không? – Savageman

0

Dựa trên việc trên, tôi đã cố gắng ou ta vài thông số chuỗi truy vấn trên API đồ thị cho phép URL, và nó xuất hiện công trình này:

https://graph.facebook.com/oauth/authorize?client_id=[APP_ID]&redirect_uri=[REDIRECT_URL]&scope=publish_stream&enable_profile_selector=1&profile_selector_ids=[PAGE_IDS]

EDIT: Đừng bận tâm, hiển thị trên tất cả các giao diện người dùng một cách chính xác, nhưng vẫn nhận được "(# 200) Các người dùng chưa ủy quyền ứng dụng thực hiện hành động này "lỗi --- rõ ràng là nó không hoạt động vì mã thông báo truy cập chứa id USER của tôi chứ không phải ID của trang.

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