人人api(ruby)
4332 ワード
#encoding: utf-8
require "net/http"
require "net/https"
require "json"
require "oauth2"
class RenRenController < ApplicationController
def client
# Authorization Code
ac = OAuth2::Client.new(api_key, api_secret, "/oauth/authorize","/oauth/token",
:site => {:url=>'https://graph.renren.com', :response_type=>'code'},
:access_token_url => 'https://graph.renren.com/oauth/token')
end
def login
# scope , , api
redirect_to client.auth_code.authorize_url(
:scope=>"publish_feed publish_blog",
:redirect_uri => " url/loginnext",
:response_type=>'code')
end
def loginnext
# Access Token
access_token = client.auth_code.get_token(params[:code], {:redirect_uri =>" url/loginnext"})
session[:renren_access_token]=access_token.token
# Session Key, renren api
get_uri=URI.parse(URI.encode("http://graph.renren.com/renren_api/session_key?oauth_token=#{session[:renren_access_token]}"))
res=JSON Net::HTTP.get(get_uri)
session[:renren_session_key]= res["renren_token"]["session_key"]
session[:renren_expires_in]=res["renren_token"]["expires_in"]
session[:renren_refresh_token]=res["renren_token"]["refresh_token"]
redirect_to "/ren_ren/add_blog"
end
def add_blog
session_key=session[:renren_session_key]
str="api_key=#{api_key}"
str<<"content=testbdesc"
str<<"format=JSON"
str<<"method=blog.addBlog"
str<<"session_key=#{session_key}"
str<<"title=testb"
str<<"v=1.0"
str<<"#{api_secret}"
# sig, , a-z
sig=Digest::MD5.hexdigest(str)
query={:api_key=>api_key,
:content=>'testbdesc',
:format=>'JSON',
:method=>'blog.addBlog',
:session_key=>session_key,
:title=>'testb',
:v=>'1.0',
:sig=>sig
}
@ab=JSON Net::HTTP.post_form(URI.parse(URI.encode("http://api.renren.com/restserver.do")),query).body
end
def user
session_key=session[:renren_session_key]
str="api_key=#{api_key}"
str<<"call_id=#{Time.now.to_i}"
str<<"format=JSON"
str<<"method=users.getInfo"
str<<"session_key=#{session_key}"
str<<"v=1.0"
str<<"#{api_secret}"
sig=Digest::MD5.hexdigest(str) #create sig
query={:api_key=>api_key,
:call_id=>Time.now.to_i,
:format=>'JSON',
:method=>'users.getInfo',
:session_key=>session_key,
:v=>'1.0',
:sig=>sig
}
@user=JSON Net::HTTP.post_form(URI.parse(URI.encode("http://api.renren.com/restserver.do")),query).body
end
#api_key
def api_key
'api_key'
end
#secret_id
def api_secret
'secret'
end
end
多くのものはrenrenrenのapiを見に行きます.ここではいくつかのgem、jsonとoauth 2を使っています.httpとhttpsを導入することを忘れないでください.