2012-06-28 40 views
6

Tôi đang cố gắng tự động hiển thị bài đăng trên tường từ trang Facebook của một trang web khác. Tôi có thể sử dụng trình khám phá API đồ thị để có được một cách thủ công. Khi tôi sử dụng mã thông báo được tạo trong mã của tôi, tất cả đều tốt. Vấn đề là các mã thông báo hết hạn nhanh chóng. Nó chỉ là không thực tế để có được một mã mới nhiều lần trong ngày. Tôi biết có một cách để yêu cầu một mã thông báo truy cập một cách có lập trình - trong trường hợp của tôi thông qua PHP, nhưng tất cả các ví dụ đều yêu cầu một bí mật ứng dụng. Vì đây là một trang chứ không phải ứng dụng nên không có bí mật.Cách nhận mã thông báo truy cập Facebook cho một trang không có ứng dụng hoặc bí mật ứng dụng

Tôi đã thử này:

{ "lỗi":: { "message": ". Lỗi xác nhận ứng dụng không thể nhận được thông tin ứng dụng

https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=MY_CLIENT_ID&redirect_uri=http%3A%2F%2FMY_SITE_URL&scope=user_status

Những gì tôi có được trở lại đây là do lỗi hệ thống. ", " loại ":" OAuthException ", " mã ": 101 } }

Tôi đã thử sử dụng Fiddler để chặn cuộc gọi từ trình khám phá API Graph để xem những gì tôi cần trong tệp mã của mình, nhưng không có bất kỳ may mắn nào.

+0

_ “Vì đây là một trang chứ không phải ứng dụng, không có bí mật.” _ - vâng, sau đó chỉ cần tạo ứng dụng, mọi thứ dễ dàng hơn nhiều khi cố gắng "làm việc xung quanh" không có ứng dụng thực tế. Bạn không cần phải thiết lập bất kỳ trang ứng dụng, canvas hoặc trang tab url nào - chỉ cần tạo ứng dụng và có thể thiết lập tên miền để đăng nhập và sau đó nhận mã thông báo truy cập bằng ứng dụng đó, làm cho chúng tồn tại lâu dài và truy vấn API đồ thị với các mã thông báo này. – CBroe

Trả lời

1

Đối với các đối tượng đồ thị không phải là riêng tư (công khai), bạn có thể sử dụng app_id của mình làm access_token.

Ứng dụng của bạn không bao giờ thay đổi, do đó bạn không bao giờ phải gia hạn. Câu hỏi đặt ra là nội dung tường của bạn?

Nếu bạn có thể dễ dàng sử dụng app_id để thực hiện việc này mà không phải yêu cầu mã thông báo truy cập mọi lúc.

Tuy nhiên, để có app_id bạn cần tạo một ứng dụng trên facebook bằng tài khoản nhà phát triển facebook.Theo như tôi hiểu không có cách nào để ẩn danh đưa ra yêu cầu đối với API đồ thị,

+0

Là nhà phát triển web cho công ty, tôi đã được cấp quyền truy cập quản trị vào trang. Tôi cho rằng tôi cần tự học tốt hơn trong thuật ngữ Facebook. Nó làm tôi bối rối. Tôi không hiểu cách tạo ứng dụng sẽ giúp ích cho bạn, nhưng điều đó đã được đề xuất hai lần ngay bây giờ. Và ngay cả khi tôi làm thế, làm thế nào để tạo mối liên kết giữa ứng dụng và trang hiện tại? –

+0

Đừng bận tâm. Nó có ý nghĩa bây giờ. Tôi vừa tạo một ứng dụng và yêu cầu mã thông báo truy cập và các bài đăng trên tường đang hoạt động trở lại. Cảm ơn. –

+5

Tôi đã cố gắng sử dụng app_id làm mã thông báo truy cập để đăng dữ liệu vào trang facebook của mình nhưng tôi gặp lỗi "Mã thông báo truy cập OAuth không hợp lệ". Nếu bạn có bất kỳ mã ví dụ nào, vui lòng cập nhật. –

14
  1. Sử dụng các app-id để xây dựng liên kết này cho phép các quản lý của trang https://www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&redirect_uri=MY_SITE_URL&scope=manage_pages&response_type=token

  2. Trao đổi thẻ cho perm (còn token)
    https://graph.facebook.com/oauth/access_token?client_id=MY_CLIENT_ID&client_secret=MY_CLIENT_SECRET&grant_type=fb_exchange_token&fb_exchange_token=(from link1)

  3. Truy cập trang này , tìm TRANG mà bạn muốn đăng và sao chép access_token mới https://graph.facebook.com/me/accounts?access_token= (từ link2)

  4. Sử dụng mã thông báo cuối cùng này (biểu mẫu link3) để đăng lên trang dưới dạng ứng dụng

  5. Lưu ý vì nó sẽ hết hạn sau 60 ngày. (FB không còn cung cấp không giới hạn ẩn access token)

Chỉnh sửa (2013 ngày 24 tháng 10): điểm 5 không còn đúng nữa, trang truy cập Tokens tạo ra từ tồn tại lâu dài Tokens tài khoản không hết hạn.

Chỉnh sửa (tháng 2 năm 2016): Hiện tại "thường" hết hạn sau 60 ngày nhưng có thể bị vô hiệu bất cứ lúc nào.

+0

Cảm ơn bạn đã phản hồi nhanh. Khi tôi thử bước đầu tiên tôi nhận được "Đã xảy ra lỗi. Vui lòng thử lại sau." Tôi đã thử các bước tương tự trong quá trình này và đó là phản hồi mà tôi thường nhận được. Ngoài ra, tôi không muốn quản lý các trang hoặc đăng lên trang. Tôi chỉ muốn đọc các bài viết trên tường từ trang và đăng chúng lên một trang khác. Cuối cùng, các trang có bí mật không? Tôi biết các ứng dụng hoạt động, nhưng đây không phải là một ứng dụng. Đó là một thất vọng lớn trong việc cố gắng giải quyết vấn đề này, hầu như mọi ví dụ ngoài kia đều giả định rằng bạn đang cố đính kèm vào một ứng dụng chứ không phải một trang. Cảm ơn một lần nữa. –

+0

Bạn đã thay đổi các lọai CLIENT_ID và SITE_URL chưa? – MPaulo

+0

Tại sao "5 điểm không còn đúng" ??? Thực sự là ngày hết hạn là 60 ngày hoặc không giới hạn? http://facebooksdk.net/docs/web/handling-expired-access-tokens/ – Elyor

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