`
hideto
  • 浏览: 2682223 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • Ruby
阅读更多
首先需要安装oauth这个gem包
gem install oauth


新浪微博OAuth
申请新浪微博API key: http://open.t.sina.com.cn/wiki/index.php/%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97
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>


豆瓣OAuth
申请豆瓣API key: http://www.douban.com/service/apikey/apply
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>
分享到:
评论
9 楼 zhangyuxiu 2012-11-12  
实现使用ruby实现新浪oauth的代码中有:@oauth_verifier = "" # put the verfifier code here    请问这一句如何实现啊。验证码是在浏览器网页中的,要扣取出来么?   期待你的回复。谢谢!
8 楼 mysoko 2011-04-15  
怎么创建对应的站内帐户呢?
如果我想要email怎么办?
7 楼 易卡螺丝君 2011-01-30  
自己fork一下 不是很难吧
6 楼 sevk 2011-01-30  
给 oauth  打个 encode 补丁
5 楼 bnulee 2011-01-26  
这个问题有无解决啊?!!
4 楼 playcase 2011-01-19  
hideto 写道
playcase 写道
这个gem处理腾讯微薄不好用啊


腾讯的oauth api让人蛋疼,我试了下一直invalid signature错误,貌似是encode parameters方式的问题


我测试也是401错误,invalid signature

看了源码,发现这个gem里没有处理encode方式的参数。
3 楼 hideto 2011-01-18  
playcase 写道
这个gem处理腾讯微薄不好用啊


腾讯的oauth api让人蛋疼,我试了下一直invalid signature错误,貌似是encode parameters方式的问题
2 楼 playcase 2011-01-18  
这个gem处理腾讯微薄不好用啊
1 楼 foohsinglong 2011-01-16  
可以直接嵌入么?

相关推荐

    OAuth2.0新浪微博简单示例

    这个“OAuth2.0新浪微博简单示例”是为初学者设计的,旨在帮助理解OAuth2.0的工作原理及其在实际应用中的实现方式,特别是与新浪微博的集成。 首先,我们来深入了解一下OAuth2.0的核心概念: 1. **客户端(Client...

    OAuth2 新浪微博

    本例子自己学习最近刚刚接触新浪微博的demo 逻辑不是很好 仅供需要的人参考 WeiBo1.0 没有用线程访问网络 4.0以上不能使用 WeiBo2.0s1 添加了线程访问网络 4.0测试能够使用 但是某些人说 还有问题 具体情况不详 ...

    Oauth 2.0 新浪微博 腾讯微博

    总结来说,OAuth 2.0是连接第三方应用和微博平台的关键,它提供了安全的授权机制,使得应用能够代表用户执行操作,如发布微博,同时保护用户的隐私和账户安全。通过理解OAuth 2.0的工作流程,并结合具体平台的API...

    使用Oauth2.0实现微博授权登录

    OAuth2.0是一种广泛使用的开放授权协议,它允许第三方应用在用户许可的...综上所述,实现微博授权登录涉及OAuth2.0协议的理解和微博API的使用。通过合理的步骤和安全措施,你可以为用户提供安全、便捷的微博登录体验。

    使用Oauth2.0实现新浪微博客户端(C#)

    总之,使用OAuth2.0和C#开发新浪微博客户端涉及了网络请求、JSON解析、授权流程和错误处理等多个环节。理解这些概念和技术,不仅可以帮助你完成这个项目,还能为其他OAuth2.0服务的集成提供借鉴。

    新浪微博登录 sina

    标题“新浪微博登录 sina”指的是关于如何使用新浪开放平台的OAuth协议进行微博登录的教程或代码示例。在互联网开发中,OAuth是一种授权框架,允许第三方应用在用户授权的情况下,访问其存储在另一服务提供者上的...

    OAuth2认证之新浪微博

    新浪微博是中国一个非常流行的社交媒体平台,它也采用了OAuth2协议来允许开发者构建的应用程序能够安全地与微博平台进行交互。 OAuth2的基本流程包括四个角色:资源所有者(User)、客户端(Client)、认证服务器...

    OAUTH1.0腾讯登录与新浪微博登录

    在这个主题中,我们将深入理解OAuth 1.0在腾讯和新浪微博登录中的应用,以及如何使用Java进行实现。 OAuth 1.0的核心概念包括三个主要角色:资源所有者(用户)、客户端(第三方应用)和认证服务器(腾讯或新浪微博...

    易语言新浪微博开源oauth版

    易语言新浪微博开源oauth版源码例程程序结合易语言扩展界面支持库和WEB客户2.1版,实现新浪微博的oauth认证登录,及浏览、发布新浪微博信息。 本易语言例程还使用到易语言多线程支持库,易语言应用接口支持库,超文本...

    新浪微博OAuth授权的Java实现.pdf

    新浪微博OAuth授权的Java实现是通过使用OAuth协议和相关的OAuth库来实现的。OAuth协议使用户不需要直接向第三方应用提供用户名及密码,且使一个账户在多个网站中使用成为可能。在Java平台上实现新浪微博OAuth授权...

    新浪微博OAuth2.0登录

    本教程将详细阐述如何使用C#语言和MVC框架实现新浪微博的OAuth2.0登录流程。 首先,我们需要理解OAuth2.0的基本流程。OAuth2.0的核心是四类角色:资源所有者(用户)、资源服务器(如新浪微博)、客户端(你的应用...

    新浪微博 api Oauth认证.

    【标题】:“新浪微博API OAuth认证”是一个关于使用OAuth授权机制与新浪微博API进行交互的技术主题。OAuth是一种开放标准,允许用户提供一个令牌,而不是用户名和密码来访问他们存储在特定服务提供者的数据。在微博...

    新浪微博OAuth 验证

    下面我们将深入探讨“新浪微博OAuth验证”的相关知识点。 1. OAuth 2.0 协议基础 OAuth 2.0 是一个授权框架,它定义了如何安全地授予第三方应用有限的访问权限,而无需分享用户的登录凭证。在这个过程中,用户授权...

    新浪微博 oauth2 模拟登录

    在本文中,我们将深入探讨如何使用OAuth2协议模拟登录新浪微博,并了解相关技术细节。OAuth2是一种授权框架,允许第三方应用代表用户与服务提供商进行交互,例如发布微博。在这个例子中,我们将使用Java的Apache ...

    Ruby-OAuth2一个OAuth20协议的Ruby封装

    总之,Ruby-OAuth2是Ruby开发者实现OAuth 2.0授权的重要工具,它通过简洁的接口和易于理解的API,降低了与OAuth 2.0服务器通信的复杂性,使得开发者可以专注于构建功能丰富的应用,而不用担心授权和身份验证的安全...

    新浪微博OAuth2.0 SDK+ Demo C#

    本文将深入探讨如何使用C#语言结合新浪微博OAuth2.0 SDK,实现对微博数据的获取和操作,以及通过提供的Demo来理解和实践这个过程。 首先,OAuth2.0是一种授权框架,它允许第三方应用在用户授权的情况下访问其存储在...

    使用新浪微博API的OAuth认证发布微博实例

    新浪微博API的OAuth认证发布微博实例涉及到几个关键的知识点,包括OAuth认证流程、新浪微博API的使用以及微博的发布操作。下面将详细解说这些知识点。 首先,OAuth认证是一种授权机制,它允许用户让第三方应用访问...

    手把手教你开发新浪微博(完整版)

    一个完整的新浪微博客户端android版OAuth认证 开发我的新浪微博客户端-大图浏览以及保存篇 开发我的新浪微博客户端-阅读微博功能篇 开发我的新浪微博客户端-阅读微博UI篇 开发我的新浪微博客户端-用户首页面功能篇 ...

    使用WebView实现新浪微博Oauth2.0认证(android)

    在Android开发中,有时我们需要集成第三方社交平台的功能,如新浪微博,以便用户能够通过自己的社交账号登录或分享内容。本文将详细介绍如何使用WebView组件实现新浪微博的OAuth2.0认证过程,这是一个安全、便捷的...

    新浪微博php sdk文件

    在当今互联网时代,社交网络平台的登录接口已经成为许多网站和应用的常见功能,其中新浪微博凭借其庞大的用户基础,为开发者提供了丰富的API接口,使得用户可以通过自己的微博账号快速登录第三方网站。本篇文章将...

Global site tag (gtag.js) - Google Analytics