2014-11-16 15 views
7

tình hình của tôi và những gì tôi có (!):Làm thế nào để đổi mới/kéo dài Facebook access token với Koala Gem từ MÁY CHỦ với NO tương tác người dùng ở tất cả

  1. Rails ứng dụng (phiên bản cuối cùng của Rails)
  2. Koala gem (phiên bản trước)
  3. 1 (một) người dùng Facebook (ví dụ - là tôi), và đó là tất cả, không có nhiều người dùng (!)
  4. Trang trên một trang web không có bất kỳ biểu mẫu đăng nhập FB nào

Bây giờ tình hình:

Tôi tạo ra trang tại một trang web, mã của tôi nên kéo bài gần đây từ tài khoản Facebook của tôi và hiển thị nó trên trang đó.

Những gì tôi đã làm:

  1. tôi thêm Koala đá quý
  2. Sau đó, tôi tạo ra ứng dụng trong tài khoản nhà phát triển của tôi tại FB và cấp cho rằng ứng dụng truy cập đầy đủ vào hồ sơ của tôi (nó cùng một cấu hình Sau đó, tôi đã tạo mã thông báo truy cập ứng dụng từ đây (https://developers.facebook.com/tools/accesstoken) - khi tôi sửa lỗi, FB đã nói với tôi rằng mã thông báo này là mã thông báo ngắn, hết hạn sau 1 giờ.
  3. Sau đó, tôi tạo ra mã mà trong mô hình của tôi:

    oauth = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET) 
    new_access_info = oauth.exchange_access_token_info self.get_token <- here i pull token from DB 
    
    new_access_token = new_access_info["access_token"] 
    new_access_expires_at = DateTime.now + new_access_info["expires"].to_i.seconds 
    
    self.update_all(:token => new_access_token) ***<- saving token in db*** 
    self.update_all(:exp => new_access_expires_at) ***<- saving expiration of token in db*** 
    
    @facebook ||= Koala::Facebook::API.new(self.get_token) 
    

Vì vậy, lần đầu tiên tôi đặt thẻ ngắn sống của tôi trực tiếp trong db, do đó, mã của tôi có thể kéo nó từ đó, sau đó, khi tôi tải lại trang, tôi có mã thông báo MỚI, dài hạn (có ngày hết hạn 12/01/2015).

NHƯNG! Mỗi khi tôi tải lại trang của mình, tôi nhận được mã thông báo MỚI nhưng với ngày hết hạn CÙNG (trình gỡ lỗi của FB cho tôi biết như vậy, khi tôi sao chép mã thông báo từ trang của tôi và dán vào trình gỡ lỗi).

Tôi thậm chí đã cố gắng để làm điều này trong những ngày khác nhau, vì tôi đọc "ở đâu đó" mà mã thông báo thời kỳ đổi mới là một lần mỗi ngày, nhưng:

Mã LUÔN khác nhau, nhưng ngày hết hạn luôn luôn giống nhau.

gì tôi cần:

Đổi mới token hoặc viết mã để các thẻ được cập nhật tự động mà không hành động từ bên cạnh tôi, vì không có cửa sổ đăng nhập hoặc cái gì đó tương tự. Nó sẽ làm việc CHỈ từ serverside.

Mọi suy nghĩ? Đã đọc rất nhiều thông tin và câu hỏi tương tự, nhưng hầu hết các câu hỏi có liên quan đến tương tác của người dùng, như đăng nhập ở các biểu mẫu thích hợp, v.v. -

+0

@Jobili, đã làm việc giải pháp của Mike chưa? –

Trả lời

0

Bạn có thể thử phương pháp này.

@oauth = Koala::Facebook::OAuth.new(ENV['fb_app_id'], ENV['fb_app_secret']) 
oauth_access_token = @oauth.get_app_access_token 

@graph = Koala::Facebook::API.new(oauth_access_token) 
+0

'get_app_access_token' nhận mã thông báo truy cập ứng dụng, chỉ có thể được sử dụng để" sửa đổi và đọc cài đặt ứng dụng "và" xuất bản hành động Biểu đồ mở ". https://developers.facebook.com/docs/facebook-login/access-tokens –

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