Mã thông báo truy cập Facebook cho các trang


115

Tôi có một trang Facebook mà tôi muốn nhận được một số thứ từ nó. Điều đầu tiên là các nguồn cấp dữ liệu và từ những gì tôi đọc chúng là công khai (không cần access_token). Nhưng tôi cũng muốn nhận các sự kiện ... và chúng không công khai và cần access_token.

Tôi không muốn người dùng đăng nhập vào Facebook hoặc bất cứ điều gì tương tự. Tôi chỉ muốn đẩy tất cả dữ liệu tôi có thể từ trang duy nhất này. Đó là lý do tại sao tôi đã loại bỏ nhiều ví dụ tôi tìm thấy ở đây và một ví dụ tại https://developers.facebook.com/blog/post/500/ , vì họ muốn người dùng đăng nhập hoặc yêu cầu một số hành động của người dùng mà tôi không can thiệp.

Điều tôi muốn là Ứng dụng Facebook của tôi có toàn quyền và access_token để đẩy dữ liệu từ một Trang Facebook mà tôi sở hữu (quản trị viên). Điều này có thể không? Tôi đã thử nhiều thứ nhưng dường như không có gì để làm việc.

Tôi đã thử nhấp vào đây: https://www.facebook.com/dialog/oauth?client_id=150635421702954&redirect_uri=http://MY_URL/&scope=manage_pages&response_type=token&fields=access_token - thay đổi yêu cầu của tôi trang tôi sở hữu. Thậm chí không phải là những gì tôi muốn tôi đã nhấp nhưng không có access_token để đáp lại ...


Để nhận sự kiện, tôi thực hiện việc này ngay bây giờ (access_token hết hạn rất nhiều): 1 - Nhận mã thông báo từ Graph Explorer 2 - Dán mã vào mã của tôi bên dưới: var authToken = 'THE_CODE_I_GOT'; var feedQuery = 'graph.facebook.com/MY_PAGE_ID/feed'; var feedURL = feedQuery +'?access_token='+ authToken +'&callback=?'; $.getJSON(feedURL,function(data){ var d = data.data; cho (i = 0; i <d.length; i ++) {d [i] .message? $ ("# list"). chắp thêm ('<li>' + d [i] .message + '</ li>'): ''; // nhiều thứ khác, bạn hiểu rồi}}); `
bsides

1
Bạn có thể nhận được mã thông báo vĩnh viễn: stackoverflow.com/questions/17197970/ Kẻ
Josh

Câu trả lời:


269
  1. Chuyển đến Trình khám phá API đồ thị
  2. Chọn ứng dụng của bạn từ menu thả xuống
  3. Nhấp vào "Nhận mã thông báo truy cập"
  4. Chọn manage_pagesquyền (bạn cũng có thể cần user_eventsquyền, không chắc chắn)
  5. Bây giờ truy cập me/accountskết nối và sao chép trang của bạnaccess_token
  6. Bấm vào id trang của bạn
  7. Thêm trang access_tokenvào các trường GET
  8. Gọi kết nối bạn muốn (ví dụ PAGE_ID/events:)

1
Bằng cách này, tôi có thể gọi các kết nối trên tất cả các trang của mình bằng cách sử dụng mã thông báo trang chỉ một trong số chúng. Điều này có sai không? Có cách nào để nhận mã thông báo cho chỉ một trang cụ thể không hoạt động trên các trang khác không?
andresp

112
Tôi đã leo núi và bơi đại dương chỉ cần tìm kiếm câu trả lời này. Cảm ơn bạn.
IMB

15
Quá trình này không hoạt động nữa vì mã thông báo truy cập được tạo hết hạn khi bạn đăng xuất vì bất kỳ lý do gì.
coneybeare

1
@coneybeare, vui lòng tham khảo tài liệu này về cách mở rộng mã thông báo truy cập trang
ifaour

1
Tôi tiếp tục nhận được một kết quả trống rỗng. Liệu nó có làm nên sự khác biệt nếu đó là một trang ứng dụng?
Tối đa

16

Xem tại đây nếu bạn muốn cấp quyền truy cập vĩnh viễn cho Ứng dụng Facebook vào một trang (ngay cả khi bạn / chủ sở hữu ứng dụng đã đăng xuất):

http://developers.facebook.com/docs/opengraph/USE-app-tokens/

"Mã thông báo truy cập ứng dụng không hết hạn trừ khi bạn làm mới bí mật ứng dụng thông qua cài đặt ứng dụng của mình."


6
Điều này không giúp nhận được các sự kiện cho một trang bị hạn chế.
Sinan

2
Điều đó có còn đúng không?!
jeromej

5

Các tài liệu cho điều này là tốt nếu không phải là một chút khó khăn để tìm thấy.

API đồ thị Facebook - Mã thông báo trang

Sau khi khởi tạo fbgraph của nút , bạn có thể chạy:

var facebookAccountID = yourAccountIdHere 

graph
.setOptions(options)
.get(facebookAccountId + "/accounts", function(err, res) {
  console.log(res); 
});

và nhận được phản hồi JSON với mã thông báo bạn muốn lấy, được đặt tại:

res.data[0].access_token
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.