我试图通过用户的access_token获取facebook上的用户详细信息。需要启用HTTPS。
get '/fbdetails' do
uri = URI('https://graph.facebook.com/me?access_token=CAACEdEose0cBAMF7kse5oFQyygDDgOZCMQFvddZBEskIdxiNlmWd2Mzx3lLWZCoZCJZCjXnMN08NLe8Ts8UJoOd9XjNrJ9QG5BsZC9ahB0h9NcdSDZA0LDdjfmtiXnmimyNZBTTxv7UT1ZBcz2vbKj2DYZAAGdoy7woJEcu1ZAoFpzcpaa47mz0DLwgNPY6PZA0Vrc7ZAT9snEZC6XdiUZAkgUZARvhBIxlltqEEelAZD')
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https').start do |http|
request = Net::HTTP::Get.new uri.request_uri
response = http.request
end
return response
end
在这里,一个IOError被丢弃,即HTTP会话已经打开。
需要这种格式的JSON响应:
{
"id": "10206515808233150",
"first_name": "Ashutosh",
"gender": "male",
"last_name": "Jha",
"link": "https://www.facebook.com/app_scoped_user_id/10206515808233150/",
"locale": "en_US",
"name": "Ashutosh Jha",
"timezone": 5.5,
"updated_time": "2015-02-17T16:38:08+0000",
"verified": true
}
你的代码有两个错误。
(1)您使用了两次start
方法,因此抛出了"HTTP会话已打开"错误。
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https').start do |http|....
(2)您错过了http.request
response = http.request
所以你的代码应该是:
uri = URI('https://graph.facebook.com/me?access_token=CAACEdEose0cBAMF7kse5oFQyygDDgOZCMQFvddZBEskIdxiNlmWd2Mzx3lLWZCoZCJZCjXnMN08NLe8Ts8UJoOd9XjNrJ9QG5BsZC9ahB0h9NcdSDZA0LDdjfmtiXnmimyNZBTTxv7UT1ZBcz2vbKj2DYZAAGdoy7woJEcu1ZAoFpzcpaa47mz0DLwgNPY6PZA0Vrc7ZAT9snEZC6XdiUZAkgUZARvhBIxlltqEEelAZD')
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https') do |http|
request = Net::HTTP::Get.new uri.request_uri
response = http.request request
#puts response.body
end
你可以从ruby net/http库文档中找到更多有用的信息