`
默糖糖
  • 浏览: 14820 次
  • 性别: Icon_minigender_2
  • 来自: 西安
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
一.创建应用:
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 得到服务器段的响应

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics