Tôi muốn triển khai Facebook Credits trong ứng dụng Facebook của mình. Có ai biết về một phiên bản của ứng dụng mẫu Facebook Credits có sẵn trong Ruby on Rails không? Có ai đã làm một viên ngọc cho điều này chưa? Nếu tôi tìm thấy một tôi sẽ liên kết dưới đây ...Có một Facebook Credits Ruby On Rails gem chưa? Hoặc phiên bản ruby của ứng dụng mẫu Facebook Credits của họ?
Trả lời
Dưới đây là mã của tôi lấy ví dụ FB và RORing nó:
require 'facebook_signed_request.rb'
class FacebookCreditsController < ApplicationController
skip_before_filter :verify_authenticity_token
layout nil
def index
facebook_request = FacebookSignedRequest.new(request.params['signed_request'])
data = { "content" => {} }
# handle invalid request
if !facebook_request.valid?
return
end
signed_request = facebook_request.signed_request
# handle invalid signed request
if signed_request.nil?
return
end
method = request.params['method']
order_id = request.params['order_id']
# second state response from facebook
if method == 'payments_status_update'
status = request.params['status']
if status == 'placed'
next_state = 'settled'
data['content']['status'] = next_state
elsif status == 'settled'
redirect_to '/lots'
return
end
# compose returning data array_change_key_case
data['content']['order_id'] = order_id
# first stage response from facebook
elsif method == 'payments_get_items'
order_info = request.params['order_info']
item = JSON.parse(order_info)
item['price'] = item['price'].to_i
# for url fields, if not prefixed by http://, prefix them
url_key = [ 'product_url', 'image_url' ]
url_key.each do |key|
if item[key][0..6] != 'http://'
item[key] = "http://#{item[key]}"
end
end
# if payload['test_mode']
if request.params['test_mode']
update_keys = ['title', 'description']
update_keys.each do |key|
item[key] = '[Test Mode] ' + item[key]
end
end
data['content'] = [item]
end
data['method'] = method
render :json => data
end
end
Sau đó, thêm vào này có:
require 'base64'
require 'json'
require 'openssl'
class FacebookSignedRequest
attr_reader :signed_request
def initialize(signed_request)
@signed_request = signed_request
end
def base64_url_decode str
encoded_str = str.gsub('-','+').gsub('_','/')
encoded_str += '=' while !(encoded_str.size % 4).zero?
Base64.decode64(encoded_str)
end
def valid?
# TODO: move it to some configuration
secret = " << my secret is here >>"
# decode data
encoded_sig, payload = signed_request.split('.')
sig = base64_url_decode(encoded_sig).unpack("H*")[0]
data = JSON.parse base64_url_decode(payload)
if data['algorithm'].to_s.upcase != 'HMAC-SHA256'
# Rails.logger.error 'Unknown algorithm. Expected HMAC-SHA256'
return false
end
#check sig
expected_sig = OpenSSL::HMAC.hexdigest('sha256', secret, payload)
if expected_sig != sig
# Rails.logger.error 'Bad Signed JSON signature!'
return false
end
data
end
Tôi không biết nếu điều này giúp bất cứ ai khác, nhưng tất cả đều làm việc cho tôi. Xin lỗi vì dùng quá lâu để nhớ để trở lại và gửi mã làm việc của tôi ...
Xem related code theo yêu cầu:
#view
<%= javascript_include_tag "premium_signup" %>
<script type="text/javascript">
$(document).ready(function() {
$('#premium_signup_button').click(function() {
signupAsPremiumMember('Premium Membership', 'Create unlimited auctions with no extra charge at all for 1 year.', "1", '', '');
});
});
</script>
...
<button id="premium_signup_button">Signup as a premium member</button>
#premium_signup.js
function signupAsPremiumMember(title, desc, price, imageURL, productURL) {
var order_info = {
"title": title,
"description": desc,
"price": price,
"image_url": imageURL,
"product_url": productURL
};
var payload = {
"method": 'pay',
"order_info": order_info,
"purchase_type": 'item'
};
console.log(FB.ui(payload, facebookPurchaseCompletionCallback));
}
function facebookPurchaseCompletionCallback(data) {
if (data['order_id']) {
console.log(data['order_id']);
}
else if (data['error_code']) {
console.log(data['error_code']);
}
else {
console.log("failed");
}
}
#in the layout
#in head
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<%= javascript_include_tag 'application' %>
#in body
<div id="fb-root"></div>
<script>
FB.init({
appId : '############',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
Bây giờ tất cả những điều này xuất phát từ một anh chàng ngồi xuống và học cách chương trình trong Ruby On Rails với ít kiến thức Javascript hỗ trợ như tôi có thể nhận được, trong khoảng 12 tuần năm ngoái với một vài tuần nữa ném trong năm nay cho biện pháp tốt. Tôi nói rằng bằng cách thận trọng - mã tôi đã đăng có thể là rác ... nhưng nó hoạt động :-)
Và nếu bất kỳ ai thực sự tìm thấy bất kỳ câu trả lời hữu ích nào trên câu trả lời này sẽ được đánh giá cao - chỉ sayin ':-)
hai .. Tôi thích sử dụng các khoản tín dụng facebook api cho ứng dụng đường ray 3 của tôi. Cũng có thể chia sẻ mã của lượt xem. Để tôi có thể hiểu được dòng chảy bắt đầu như thế nào. –
Xin chào - Tôi rất sẵn lòng chia sẻ bất kỳ điều gì :-) ... Tôi sẽ phải tìm hiểu những gì tôi đã làm trong các lượt xem (không hoạt động trên ứng dụng này vào lúc này) vì vậy hãy kiên nhẫn và tôi sẽ bài ... thay thế cảm thấy tự do để nhắn tin cho tôi trực tiếp trên đây và đuổi theo tôi cho mã :-) ... R –
chắc chắn ... đang chờ mã của bạn. Cảm ơn trước cho sự giúp đỡ của bạn –
- 1. Lời mời ứng dụng Facebook từ Ruby on Rails
- 2. Ruby on Rails PaperClip Gem validate_attachement lỗi
- 3. Cách đăng xuất facebook - sử dụng mã trong ứng dụng đường ray (Ruby on Rails Omniauth)
- 4. Lỗi xác thực của Ruby on Rails
- 5. Phiên bản xem di động cho Ruby on Rails
- 6. Quản lý nhiều phiên bản của Ruby Gem
- 7. Favicon trong Ruby on Rails ứng dụng
- 8. Ruby on Rails RMagick gem cài đặt vấn đề
- 9. Ruby vs Ruby On Rails
- 10. Ruby on Rails SMS gửi
- 11. Backbone.js hoặc Ember.js với Ruby on Rails
- 12. Là fb_graph hoặc Koala ruby gem tốt hơn facebooker2, sử dụng đồ thị facebook?
- 13. Ruby on Rails: Phiên với ActiveResource?
- 14. Hướng dẫn API Ruby on Rails
- 15. Sử dụng Ruby on Rails
- 16. Lời mời của nhà phát triển Facebook cho một Ứng dụng Facebook chưa nhận được
- 17. Làm thế nào tôi có thể làm cho của Ruby on Rails của tôi 2.3.4 ứng dụng "Rails 3-ready"
- 18. Ruby on Rails: unloadable
- 19. Phiên bản Ruby của phương thức String
- 20. Thanh thông báo trong Ruby on Rails
- 21. Ruby on rails và Node.js
- 22. Intellisense cho Ruby, Ruby on Rails, Python
- 23. Ứng dụng canvas Facebook iFrame Phiên bản PHP
- 24. Ruby on Rails CoffeeScript không
- 25. Ứng dụng Ruby on Rails trên Google App Engine
- 26. Ruby on Rails 301
- 27. Ruby on rails server app + Ứng dụng khách trên iOS?
- 28. Tài liệu Ruby on Rails
- 29. Nhận tên máy chủ hoặc IP trong Ruby on Rails
- 30. Ruby on Rails: Tìm bản ghi có giá trị thấp nhất của một cột cụ thể
Được rồi vì vậy tôi có phiên bản Ruby On Rails hoạt động, vì vậy tôi sẽ đăng một bản sao của nó ở đây ngay nếu có ai quan tâm. Sau đó, có lẽ tôi sẽ xem xét để đá quý nó, nếu điều đó có vẻ hợp lý. –
Hey Richard, bạn đã bao giờ đăng một bản sao ứng dụng Rails Facebook của bạn đang hoạt động chưa? Tôi thích xem nó hơn. Cảm ơn! – Tim
Không Tim, xin lỗi, hoàn toàn quên. Tôi sẽ đến tuần này. Nếu bạn không nhìn thấy nó ở đây ngay lập tức chỉ cần nhắn tin cho tôi trực tiếp. –