2013-09-06 38 views
6

Tôi đang cố gắng tạo một chương trình đơn giản để đăng nội dung lên tường của tôi trên Fcebook bằng Python. Tôi đã thử sử dụng ví dụ này từ pythonforfacebook:Làm thế nào để lập trình đăng lên tường của riêng tôi trên Facebook?

import facebook 
oauth_access_token = "****" 
graph = facebook.GraphAPI(oauth_access_token) 
me = "****" 
profile = graph.get_object(me) 
graph.put_object(me, "feed", message="I am writing on my wall!") 

Tôi đã cố truy cập trung tâm nhà phát triển và tạo ứng dụng. Đối với "Chọn cách ứng dụng của bạn tích hợp với Facebook", tôi đã chọn "Trang web bằng Facebook Đăng nhập" (Tôi thực sự không có trang web, tôi chỉ có một chương trình nên đăng lên tường facebook của tôi), nhưng đây là tùy chọn phù hợp nhất những gì tôi muốn làm ...).

Tuy nhiên, khi tôi chạy này, nó nói:

$ python a.py 
Traceback (most recent call last): 
    File "a.py", line 7, in <module> 
    graph.put_object(me, "feed", message="I am writing on my wall!") 
    File "/usr/lib64/python2.7/site-packages/facebook.py", line 140, in put_object 
    post_args=data) 
    File "/usr/lib64/python2.7/site-packages/facebook.py", line 298, in request 
    raise GraphAPIError(response) 
facebook.GraphAPIError: (#200) The user hasn't authorized the application to perform this action 

Làm thế nào tôi có thể đăng nhập như là người sử dụng và cho phép ứng dụng của tôi không? Tôi thậm chí còn có cách tiếp cận đúng không? Tôi không thực sự có một trang web, tôi chỉ có một chương trình, cho lĩnh vực trang web tôi theo nghĩa đen đã nhập "http://google.com" và nó hoạt động.

+0

Bạn nhận mã thông báo oauth của mình ở đâu? Bạn có chắc nó hợp lệ không? –

+0

@CollinGrady: Từ đây: https://developers.facebook.com/tools/access_token/ – megazord

+0

@CollinGrady: Trước khi tôi nhận được mã thông báo của mình từ liên kết đó, nó đã đưa ra lỗi về mã thông báo không hợp lệ, vì vậy tôi cho rằng nó hiện hợp lệ. – megazord

Trả lời

3

Tôi đã làm cho nó hoạt động bằng cách nhận mã thông báo mới có quyền đăng lên tường của tôi (cụ thể là quyền "publish_actions"). Tôi đã làm điều này bằng cách sử dụng Graph API Explorer, chọn ứng dụng của tôi trong trình đơn thả xuống, nhấn "Nhận mã thông báo truy cập" và kiểm tra "publication_actions". Vấn đề duy nhất là mã thông báo hết hạn sau một giờ.

+0

mở rộng mã thông báo truy cập facebook của bạn bằng thời gian hiệu lực là 60 ngày. xem url sau: - https://developers.facebook.com/docs/facebook-login/access-tokens/#extending –

+0

Cảm ơn. Điều này cực kỳ hữu ích. –

2

Bạn phải ủy quyền cho người dùng cho số publish_action/publish_stream quyền đăng trên tường của bạn.


  • Nếu nhiệm vụ duy nhất của bạn là để gửi trên tường/nhận được thông tin cơ bản; bạn có thể sử dụng mã thông báo truy cập APP APP thay vì mã thông báo truy cập của người dùng để thực hiện tác vụ khi bạn đã ủy quyền ứng dụng. Để nhận Mã thông báo truy cập ứng dụng, bạn có thể uuse-

    GET /oauth/access_token? 
        client_id={app-id} 
        &client_secret={app-secret} 
        &grant_type=client_credentials 
    

    Hoặc trực tiếp từ here. Nhưng đừng viết mã cứng trong ứng dụng của bạn (vì lý do bảo mật)

  • Hoặc, nếu bạn cũng muốn thực hiện các hành động khác thay mặt người dùng, bạn có thể mở rộng mã thông báo của người dùng đến hiệu lực trong 2 tháng. Đọc here để biết thêm chi tiết

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