一.创建应用:
1.进入新浪微博开放平台首页(http://open.t.sina.com.cn/)
2.进入我的应用
3.创建应用
4.在完成第三步的时候会得到服务商提供的 App Key(oauth_consumer_key) 以及
App Secret(oauth_secret):
二.OAuth的授权流程:
你所开发的应用需要的流程如下:
1.向应用服务商(新浪,腾讯,搜狐等微博)请求request_token
2.得到request_token后重定向用户到服务商的授权页面
3.如果用户选择授权你的应用,用request_token向服务商请求换取access_token
4.得到access_token等信息访问受限资源
而服务商相应的相应如下:
1.创建request_token返回给应用
2.询问用户是否授权此应用。如果用户授权重定向至应用页面。
3.创建access_token并返回给应用
4.相应受限资源请求并返回相关信息。
通俗的说:就是你那着得到的身份证明(request_token)向服务商申请进入用户的钥匙(access_token),服务商询问用户同不同意, 如果用户同意服务商就给你进入用户的钥匙(access_token),拿到钥匙你就可以进入用户信息中心。
三.Oauth提供两种认证方式:query-string和httpheaders .推荐使用http header进行认证
1.请求签名
所有的OAuth请求使用同样的算法来生成(signature base string) 签名字符基串和签名
base string 是把http方法名,请求url 以及请求参数用&字符连接起来后做URL Encode编码。具体来讲,base string由http方法名,之后是&,接着是经过url编码之后的url和访问路径以及&.接下来,把所有的请求参数包括POST方法中的参数,经过排序(按参数名进行文本排序,如果参数名有重复则按照数值进行重复项目排序),使用%3D代替=号,并且使用%23作为每个参数之间的分隔符,拼接成一个字符串。
这个算法【1】可以简单表示为:
httpMethod + "&"
url_encode(base_uri)+"&"+
sort_query_params.each{|k,v|
url_encode(k)+"%3D"+url_encode(v)}.join(%26)
新浪微博要求所有的OAuth请求都使用HMAC-SHA1算法生成签名。
2.获取request token
新浪开放平台的request_token获取接口地址为:http://api.t.sina.com.cn/oauth/request_token
以下是请求用的参数:
【2.1】 oauth_request_methos-POST
【2.2】 consumer_secret - "App Secret"
【2.3】oauth_callback - "用户授权后的返回地址"
【2.4】oauth_consumer_key - "App Key"
【2.5】 oauth_nonce - "随机字符串,须保证每次都不同(10位)"
【2.6】 oauth_signature_method - "HMAC-SHA1" /*签名base string的方法-*/
【2.7】 oauth_timestamp - "时间戳"
【2.8】 oauth_version -"1.0" /*OAuth协议版本*/
【2.9】 request_token_url -http://api.t.sina.com.cn/oauth/request_token
/*新浪微博获取request_token的URL*/
【2.10】 authorize_url -http://api.t.sina.com.con/oauth/authorize
/*---新浪微博开放平台的验证URL---*/
【2.11】 access_token_url - http://api.t.sina.con.cn/oauth/access_token
/*---新浪微博开放平台获取access_token的URL---*/
2.1 将上文提到了【2.2】-【2.8】用算法【1】形成base string。需要注意的是callback
在URL中包含请求参数, 由于参数只是callback url的一部分,所以并不需要
将其提出成为独特的参数。URL必须按照单个字符串来考虑。
2.2 接下来,使用signing key(App Secret 后加一个&符号)从base string 生成
oauth_signature
2.3 接下来就可以想http://api.t.sina.com.cn/oauth/request_token发送请求,
生成http hearder
2.4 当服务器端接到请求之后,会返回包含oauth_token,oauth_token_secret等内
容, 另外,oauth_callback_confirmed字段如果为true,就表示callback生效。
这时需要记下 oauth_token和oauth_token_secret.
四。用户认证:
这一步主要是发送你获取的oauth_token,并且获得用户的授权。一般来说,WEB
应用会简单的重定向到相应的页面,桌面应用程序会给出URL并要求用户自行验证.
新浪微博开放平台的验证URL是http://api.t.sina.com.cn/oauth/authorize 。要
求必须以oauth作为参数,一般来说请求格式如下: http://api.t.sina.com.cn/oauth/authorize?oauth_token=8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc
如果用户没有登录新浪微博,则会要求用户登录。否则将会出现一个页面,用户可以在此页面上一键同意或者拒绝对此应用授权。
用户授权后,web应用页面将会重定向至你指定的oauth_callback,如果是桌面应用,将会显示PIN码,用户需要将PIN码输入你的应用中来完成授权过程。
1. 获取access token
新浪微博开放平台access token请求地址为:http://api.t.sina.com.cn/oauth/access_token
以下是请求参数:
oauth_comsumer_key - App key
oauth_nonce -随机生成字符串
oauth_signature_method -HMAC-SHA1
oauth_token-
oauth_timestamp -时间戳
oauth-verifier-
oauth_version - 1.0
oauth-token-secret-
1.1 准备base string (使用算法【1】)
1.2 接着将consumer_secret 和 oauth_token_secret连接起来,中间用&分割
1.3 生成 oauth签名
1.4 向给定的url发送请求,请求头一定要包含request_token(就是 access_token)
五. 获取用户信息
进行用户验证(如果验证成功,将会返回用户的详细信息)
以下是进行用户验证的相关参数:
oauth_consumer_key - App key
oauth_nonce - 随机的字符串
oauth_signature_method - HMAC-SHA1
oauth_token - oauth_token
oauth_timestamp - 时间戳
oauth_version - 1.0
1.1 通过算法【1】生成 base string
1.2 将oauth_comsumer_secret和oauth_token_secret以& 作为分隔符拼起来。将拼
接后的字符串作为签名的key 进行加密,生成签名。
1.3 接下来就可以通过http发送请求,生成http header
1.4 返回的即使用户的详细信息。
六. 使用OAuth发表微博
可以使用获取的oauth_token和oauth_token_secret来发送微博。发送微博可以通过
Statuses/update接口。
以下是相关参数:
POST body-status= 通过OAuth发送微博信息
oauth_consumer_key - App key
oauth_nonce - 随机字符串
oauth_signature_method - HMAC-SHA1
oauth_token -
oauth_timestamp - 时间戳
oauth_version - 1.0
1.1 通过算法【1】形成base string
1.2 将oauth_consumer_secret 和oauth_token_secret以&作为分割符拼起来。将拼
接后的字符串作为签名的key进行加密,生成签名。
1.3 通过http发送请求生成http header
1.4 得到服务器段的响应
分享到:
相关推荐
学习新浪微博授权,从而更好的学习安卓开发,新浪微博共享等
新浪微博的授权和分享,可学习,可直接用
新浪微博 授权 分享 代码实例和文档 实际远行流程
导入SDK包。只实现新浪微博授权登录分享的话只需要导入ShareSDK-Core.jar(核心包)、ShareSDK-SinaWeibo.jar(新浪微博)、cn.sharesdk.onekeyshare.jar(快捷分享)
新浪微博客户端的api接入,实现第三方授权登录功能,以及api的调用。 博客地址:http://blog.csdn.net/sdksdk0/article/details/51939853
Asp.Net QQ开放平台登录代码,新浪微博开放平台登录代码,OAuth2,腾讯QQ授权登录,新浪微博授权登录,完全源代码,无任何外部dll支持,简单易懂,适合学习及开发应用!
新浪微博OAuth授权的Java实现.pdf
* 测试新浪微博API * @author syn * @date 2010/12/22 */ public class TestActivity extends Activity { private static final String BASE_URL = "http://api.t.sina.com.cn/"; //API接口 private static final ...
这是一个新浪微博的授权和分享的一个小例子,可以参考一下
用新浪官方例子发现每次授权都返回空值,搜索了一个礼拜找到的解决方法。使用的时候主要将 自己替换自己的 appkey等参数
本人从qq开发平台和新浪开发平台的sdk中,去除其他功能,只保留授权登陆功能,集成起来非常简单,使用方便!
3. 代码只实现了 获取最新公众微博的 API (可以阅读新浪微博开放平台移动应用 文档,实现其他的功能) 3. ASI 网络请求 4. 下载资源时使用 多线程编程,不会卡主线程 5. 熟悉 代理的使用 (传值) 也可用Block
asp.net 腾讯微博新浪微博帐号登录 授权
开发我的新浪微博客户端-用户授权页面功能篇 开发我的新浪微博客户端-用户授权页面UI篇 开发我的新浪微博客户端-OAuth篇 开发我的新浪微博客户端-载入页面sqlite篇 开发我的新浪微博客户端-载入页面UI篇 我的新浪...
最近开放平台非常火,各大互联网公司都纷纷推出各自的开放平台,随之流行的 OpenID, OAuth 则成为认证和授权的主要技术。本文将以登陆新浪微博获得授权取得用户数据作为示例简单研究 OAuth 的使用
java 新浪微博后台登录
简单的新浪微博分享实现,一键授权认证并分享
安卓开发,新浪微博授权的demo,通过新浪微博开放平台授权,获取用的信息JSON字符串,登陆等功能
新浪微博开放平台的体系参考了Twitter,两者非常类似,包括接口、参数的定义,请求方式等等,如果熟悉Twitter的API,基本可以同样的适用到新浪微博开放平台上,同时此文档技术部分的信息也可以同样适用于Twitter。...
最近开放平台非常火,各大互联网公司都纷纷推出各自的开放平台,随之流行的 ...本文将以登陆新浪微博获得授权取得用户数据作为示例简单研究 OAuth 的使用。 http://blog.csdn.net/fangxinggood/article/details/6629358