Tôi có một ứng dụng nơi người dùng có thể liên kết tài khoản Facebook của họ. Họ có thể đăng nhập bằng email của họ, nhưng họ có thể liên kết tài khoản Facebook của họ.Rails - Facebook với Omniauth và Koala: Cách gia hạn mã thông báo đã hết hạn
Trong giao diện nơi tôi hiển thị các mạng xã hội kết nối (Facebook và những người khác), tôi có một cái gì đó như thế này:
<%= image_tag @facebook.get_facebook_picture %>
này sẽ gọi một phương pháp dụ như thế này:
def get_facebook_picture
unless self.token.nil?
facebook_graph = Koala::Facebook::GraphAPI.new(self.token)
fb_picture = facebook_graph.get_picture("me", { :type => "small" })
end
end
này sẽ hoạt động tốt trừ khi mã thông báo Facebook mà tôi đã lưu trữ trong DB của tôi đã hết hạn. Vì vậy, tôi đã thêm xử lý ngoại lệ này trong bộ điều khiển được đề cập:
def facebook_exception_handler exception
if exception.fb_error_type.eql? 'OAuthException'
# Let's get a new auth token... How?
else
logger.debug "Damn it. We don't know what error is coming from FB"
raise exception
end
end
tôi bắt ngoại lệ một cách chính xác, nhưng tôi không thấy thế nào tôi sẽ làm mới các thẻ truy cập mà tôi có trong cơ sở dữ liệu của tôi. Lưu ý rằng mã thông báo truy cập mà tôi đã được chèn bằng cách sử dụng OmniAuth. Vì vậy, câu hỏi của tôi là:
Cho rằng tôi có OAuthException
, làm cách nào tôi có thể gia hạn mã thông báo truy cập của một người dùng cụ thể (UID) bằng cách sử dụng Omniauth?
Vì đây không phải là một câu trả lời cho câu hỏi của bạn, tôi sẽ chỉ để lại nhận xét ... nhưng bạn sẽ có thể lấy hình ảnh không có mã thông báo đang hoạt động bằng cách sử dụng: 'profile_pic = Koala :: Facebook :: GraphAPI.new.get_picture (fb_uid, {: type =>" large "})', phải không? – courtsimas
Nếu bạn muốn nhận mã thông báo 60 ngày mở rộng, [điều này có thể hữu ích] (http://stackoverflow.com/a/16721737/805003) – manafire