5

Trong tham chiếu đến:Đang cố gắng để mở rộng Facebook oauth thẻ sử dụng Koala đá quý

http://rubydoc.info/github/arsduo/koala/master/Koala/Facebook/GraphAPIMethods#graph_call-instance_method

http://developers.facebook.com/roadmap/offline-access-removal/#extend_token


Mã của tôi trông giống như sau:

fb = Koala::Facebook::API.new(access_token) 
fb.graph_call("/oauth/access_token", {"client_id" => app_id, "client_secret" => app_secret, "grant_type" => "fb_exchange_token", "fb_exchange_token" => access_token }) 

Mặc dù sự trở lại giá trị chứa mã thông báo mở rộng nhưng nó đang ném Mult iJson :: DecodeError

MultiJson::DecodeError: 387: unexpected token at 'access_token=long-lived_token&expires=5184000]' 
from /usr/local/rvm/gems/[email protected]/gems/json-1.6.1/lib/json/common.rb:148:in `parse' 
from /usr/local/rvm/gems/[email protected]/gems/json-1.6.1/lib/json/common.rb:148:in `parse' 
from /usr/local/rvm/gems/[email protected]/gems/multi_json-1.0.3/lib/multi_json/engines/json_gem.rb:13:in `decode' 
from /usr/local/rvm/gems/[email protected]/gems/multi_json-1.0.3/lib/multi_json.rb:65:in `decode' 
from /usr/local/rvm/gems/[email protected]/gems/koala-1.3.0/lib/koala/api.rb:61:in `api' 
from /usr/local/rvm/gems/[email protected]/gems/koala-1.3.0/lib/koala/api/graph_api.rb:421:in `graph_call' 
from (irb):7 
from /usr/local/rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in `start' 
from /usr/local/rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in `start' 
from /usr/local/rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands.rb:40:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

Tôi nghi ngờ kết thúc ] gây ra lỗi. Không chắc chắn nếu đây là lỗi Facebook hoặc xử lý sai phần của tôi. Đánh giá cao nếu ai đó có thể giúp tôi. Cảm tạ!


Tôi cũng đã thử sử dụng Net :: HTTP.get (uri) thay thế. Nhưng có lỗi dưới đây.

Errno::ECONNRESET: Connection reset by peer 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/protocol.rb:135:in `read_nonblock' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/protocol.rb:135:in `rbuf_fill' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/protocol.rb:116:in `readuntil' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/protocol.rb:126:in `readline' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:2211:in `read_status_line' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:2200:in `read_new' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:1183:in `transport_request' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:1169:in `request' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:1073:in `request_get' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:394:in `block in get_response' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:627:in `start' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:393:in `get_response' 
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:370:in `get' 
from (irb):11 
from /usr/local/rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in `start' 
from /usr/local/rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in `start' 
from /usr/local/rvm/gems/[email protected]/gems/railties-3.1.3/lib/rails/commands.rb:40:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

Bạn không chắc chắn đó là tường lửa hay gì đó?

Trả lời

6

Sử dụng phương thức OAuth exchange_access_token_info:

oauth = Koala::Facebook::OAuth.new("consumer_token", "consumer_secret") 
oauth.exchange_access_token_info("auth_token") 

T.B. Tôi cũng có lỗi bạn đã làm theo cách của bạn. Vấn đề là Koala hy vọng nội dung của phản hồi ở định dạng JSON, nhưng trong trường hợp đặc biệt này, các cặp tên/giá trị trong định dạng URL (chuỗi truy vấn), ví dụ:

access_token=[...]&expires=[...] 
+0

Giải quyết tại đây: https : //github.com/arsduo/koala/issues/224 –

+1

Chính xác những biến này "consumer_token", "consumer_secret" và "auth_token" là gì? Không ai trong số họ được tham chiếu đến bất cứ điều gì John Lee cung cấp trong câu hỏi của mình. – Christoffer

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