This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

GFC: serverside integration: part 2

it works
Added by about 3 years ago  »  Votes: 1/1

{{{}}}

Đoạn mã cho phép kết nối thành công với GFC

  1. Phần nhận diện người dùng đăng nhập thông qua cookie: tương tự như ở phần 1, nhưng ta khéo léo dùng :st để việc khai báo cho g_container trở nên đúng chuẩn hơn, so với tài liệu chính thức của GFC
  2. Ở phần hai, ta dùng chứng thực HMAC để lấy thông tin của một người dùng bất kỳ (xử lý offline). Trước đây, do dùng sai consumer_key mà dù đã tiếp cận đúng như mất rất nhiều thời gian dò lỗi. Xem thêm chú giải ở #578.
 1 puts "ICY INFO: fcauth => #{fcauth}" 
 2 begin
 3   puts "ICY INFO: getting information of current logged user (online-get)" 
 4 
 5   g_container = {
 6       :endpoint => "http://www.google.com/friendconnect/api",
 7       :rest => "", :rpc => "rpc",
 8       :content_type => 'application/json',
 9       :http_method => :post,
10       :post_body_signing => false,
11       :use_request_body_hash => true
12       }
13 
14   c = OpenSocial::Connection.new(
15       :container => g_container,
16       :auth => OpenSocial::Connection::AUTH_ST,
17       :st => "&fcauth=#{fcauth}" 
18       )
19   r =  OpenSocial::FetchPersonRequest.new(c)
20   puts r.send.inspect
21 
22   puts "ICY INFO: getting information of the previous user (offline-get)" 
23 
24   guid = "xxx" 
25   d = OpenSocial::Connection.new(
26       :container => g_container,
27       :auth => OpenSocial::Connection::AUTH_HMAC,
28       :consumer_key => "*:xxx",
29       :consumer_secret => "xxx",
30       :xoauth_requestor_id => guid
31       )
32   t = OpenSocial::RpcRequest.new(d, :people => OpenSocial::FetchPersonRequest.new)
33   puts t.send.inspect
34 
35 rescue OpenSocial::RequestException => e
36 rescue OpenSocial::AuthException => e
37 rescue Net::HTTPServerException => e
38 rescue RuntimeError => e
39 rescue NoMethodError => e
40 rescue JSON::ParserError => e
41 end

Comments