Ruby使用OAuth登录新浪微博和豆瓣

[size=medium]首先需要安装oauth这个gem包[/size]
[code]
gem install oauth
[/code]

[size=medium]新浪微博OAuth[/size]
申请新浪微博API key: [url]http://open.t.sina.com.cn/wiki/index.php/%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97[/url]
[code]
require 'rubygems'
require 'oauth'
# your api key here
sina_api_key = ""
# your api key secret here
sina_api_key_secret = ""

@consumer = OAuth::Consumer.new(
sina_api_key,
sina_api_key_secret,
{
:site=>"http://api.t.sina.com.cn",
}
)
# 1. get request_token
@request_token = @consumer.get_request_token

# 2. authorize & get oauth_verifier
puts "Copy this url to your browser to authorize, and get the oauth verifier code:"
puts @request_token.authorize_url
@oauth_verifier = "" # put the verfifier code here

# 3. get access_token
@access_token = @request_token.get_access_token(:oauth_verifier => @oauth_verifier)

# 4. API Example: get current user info
puts @access_token.get "/account/verify_credentials.xml"

# API result:
<?xml version="1.0" encoding="UTF-8"?>
<user>
<id>1835404525</id>
<screen_name>wendait</screen_name>
<name>wendait</name>
<province>11</province>
<city>1000</city>
<location>北京</location>
<description>wenda.it - 做国内最好的IT专业知识问答网站</description>
<url>http://1</url>
<profile_image_url>http://tp2.sinaimg.cn/1835404525/50/1293540256/1</profile_image_url>
<domain>plzdonttalkwithme</domain>
<gender>m</gender>
<followers_count>17</followers_count>
<friends_count>103</friends_count>
<statuses_count>307</statuses_count>
<favourites_count>0</favourites_count>
<created_at>Thu Oct 21 00:00:00 +0800 2010</created_at>
<following>false</following>
<verified>false</verified>
<allow_all_act_msg>false</allow_all_act_msg>
<geo_enabled>true</geo_enabled>
<status>
<created_at>Sun Jan 09 10:38:41 +0800 2011</created_at>
<id>5087310493</id>
<text>分享图片</text>
<source>
<a href="http://t.sina.com.cn/mobile/android.php">Android客户端</a>
</source>
<favorited>false</favorited>
<truncated>false</truncated>
<geo/>
<in_reply_to_status_id></in_reply_to_status_id>
<in_reply_to_user_id></in_reply_to_user_id>
<in_reply_to_screen_name></in_reply_to_screen_name>
<thumbnail_pic>http://ww1.sinaimg.cn/thumbnail/6d660cedjw6dd604n2phwj.jpg</thumbnail_pic>
<bmiddle_pic>http://ww1.sinaimg.cn/bmiddle/6d660cedjw6dd604n2phwj.jpg</bmiddle_pic>
<original_pic>http://ww1.sinaimg.cn/large/6d660cedjw6dd604n2phwj.jpg</original_pic>
<annotations/>
</status>
</user>
[/code]

[size=medium]豆瓣OAuth[/size]
申请豆瓣API key: [url]http://www.douban.com/service/apikey/apply[/url]
[code]
require 'rubygems'
require 'oauth'
# your api key here
douban_api_key = ""
# your api key secret here
douban_api_key_secret = ""

@consumer = OAuth::Consumer.new(
douban_api_key,
douban_api_key_secret,
{
:site=>"http://www.douban.com",
:request_token_path=>"/service/auth/request_token",
:access_token_path=>"/service/auth/access_token",
:authorize_path=>"/service/auth/authorize",
:signature_method=>"HMAC-SHA1",
:scheme=>:header,
:realm=>"http://yoursite.com"
}
)

# 1. get request_token
@request_token = @consumer.get_request_token

# 2. authorize
puts "Copy this url to your browser to authorize:"
puts @request_token.authorize_url

# 3. get access_token
@access_token = @request_token.get_access_token
@access_token = OAuth::AccessToken.new(
OAuth::Consumer.new(
douban_api_key,
douban_api_key_secret,
{
:site=>"http://api.douban.com",
:scheme=>:header,
:signature_method=>"HMAC-SHA1",
:realm=>"http://yoursite.com"
}
),
@access_token.token,
@access_token.secret
)

# 4. API example: get current user info
puts @access_token.get("/people/%40me")

# API result:
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">
<id>http://api.douban.com/people/1398276</id>
<title>hideto</title>
<link href="http://api.douban.com/people/1398276" rel="self"/>
<link href="http://www.douban.com/people/Hideto/" rel="alternate"/>
<link href="http://img3.douban.com/icon/u1398276-1.jpg" rel="icon"/>
<link href="http://hideto.iteye.com" rel="homepage"/>
<content>http://wenda.it</content>
<db:attribute name="n_mails">0</db:attribute>
<db:attribute name="n_notifications">1</db:attribute>
<db:signature></db:signature>
<db:uid>Hideto</db:uid>
<uri>http://api.douban.com/people/1398276</uri>
</entry>
[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当用户使用新浪微博进行第三方登录时,需要进行步骤: 1. 注册开发者账号:首先,你需要在新浪微博开放平台注册一个开发者账号,并创建一个应用。 2. 获取App Key和App Secret:在创建应用后,你将获得一个App Key和一个App Secret,这是用于进行身份验证和授权的凭证。 3. 引入SDK:你需要下载并引入新浪微博SDK到你的项目中。SDK提供了一些API和工具,方便你与新浪微博进行交互。 4. 授权登录:在你的应用中,提供一个登录按钮或者其他触发登录的方式。当用户点击登录按钮时,调用新浪微博SDK提供的接口,请求用户授权登录。 5. 获取Access Token:在用户授权登录成功后,你将获得一个Access Token。这个Token可以用来访问用户的个人信息和进行其他操作。 6. 调用API:使用获得的Access Token,你可以调用新浪微博提供的API来获取用户信息、发布微博等操作。 下面是一个简单的示例代码,展示了如何使用新浪微博SDK进行第三方登录: ```java // 引入SDK import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.auth.WbConnectErrorMessage; import com.sina.weibo.sdk.auth.WbConnectObserver; import com.sina.weibo.sdk.auth.WbConnectProgressDialog; import com.sina.weibo.sdk.auth.sso.SsoHandler; import com.sina.weibo.sdk.common.UiError; import com.sina.weibo.sdk.share.WbShareCallback; import com.sina.weibo.sdk.share.WbShareHandler; // 创建SsoHandler对象 private SsoHandler mSsoHandler; // 在登录按钮的点击事件中调用以下代码 mSsoHandler = new SsoHandler(MainActivity.this); mSsoHandler.authorize(new WbConnectObserver() { @Override public void onSuccess(Oauth2AccessToken oauth2AccessToken) { // 登录成功,获取Access Token String accessToken = oauth2AccessToken.getToken(); // TODO: 进行后续操作,如获取用户信息等 } @Override public void onFailure(WbConnectErrorMessage wbConnectErrorMessage) { // 登录失败,处理错误信息 String errorMessage = wbConnectErrorMessage.getErrorMessage(); // TODO: 处理登录失败的情况 } }); // 在Activity的onActivityResult方法中添加以下代码 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (mSsoHandler != null) { mSsoHandler.authorizeCallBack(requestCode, resultCode, data); } } ``` 请注意,以上代码仅为示例,实际使用时需要根据你的项目需求进行适当修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值