XAuth——Android客户端授权认证

          xAuth认证实际上是OAuth认证的简化版。目前xAuth只对桌面客户端和移动客户端开放申请。Web应用请使用OAuth。xAuth旨在增强客户端的用户体验,减少页面跳转次数。采用xAuth认证的桌面应用和移动应用可以跳过oauth/request_token(获取Request Token)以及oauth/authorize(授权Request Token)两步,只要提供了username和password以后,即可直接通过oauth/access_token接口得到Access Token。然后通过这个Access Token获取数据。

        xAuth的缺点是将用户名和密码暴露给了第三方应用,所以xAuth协议只适用于开放平台特殊授权的应用,也就是说,只有当开放平台完全信任这个应用的时候才会给客户端xAuth验证的权限。

       1.构造BaseString

    * x_auth_username:           用户名(即用户在新浪通行证中使用的邮箱。)

    * x_auth_password:            密码  

    * x_auth_mode:                  标识字段,这里必须是"client_auth"。

    * oauth_consumer_key:        创建应用时生成的APP KEY。

    * oauth_signature_method:  签名方法,建议使用“HMAC-SHA1”。

    * oauth_timestamp:              时间戳。生成Base String时的时间戳。

    * oauth_nonce:                     单次值,一个随机字符串,防止重复攻击。

    * oauth_version :                  OAuth协议版本。填写“1.0”。

生成BaseString 如下所示:

POST&http%3A%2F%2Fapi.t.sina.com.cn%2Foauth%2Faccess_token&oauth_consumer_key%3D1852823608%26oauth_nonce%3D-794036333%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1291944694%26oauth_version%3D1.0%26source%3D1852823608%26x_auth_mode%3Dclient_auth%26x_auth_password%3D------%26x_auth_username%3D---------%2540sina.cn

                   其中 :%2540sina.cn =@sina.com

   2.用刚刚生成的BaseString,经过HMAC-SHA1算法生成oauth_signature,示例如下:
       iviIHhwXWmFLliZbeDoSyQ+XC1o=

     3.将以下参数封装成HTTP请求头,并向oauth/access_token接口提交POST请求:

     x_auth_username:            用户名(即用户在新浪通行证中使用的邮箱。)

     x_auth_password:             密码

     x_auth_mode:                   标识字段,这里必须是"client_auth"。

     oauth_consumer_key:        创建应用时生成的APP KEY。

     oauth_signature_method: 签名方法,建议使用“HMAC-SHA1”。

     oauth_timestamp:             时间戳。生成Base String时的时间戳。

     oauth_nonce:                    单次值,一个随机字符串,防止重复攻击。该参数只支持ASCII码的字符串.

     oauth_version :                OAuth协议版本。填写“1.0”。

     oauth_signature:           签名值,是由根据上面的几个参数生成的 Base String经HMAC-SHA1算法计算得出。

    

    OAuth

    oauth_consumer_key="1852823608",

    oauth_signature_method="HMAC-SHA1",

    oauth_timestamp="1291944694",

    oauth_nonce="-794036333",

    oauth_version="1.0",

    oauth_signature="iviIHhwXWmFLliZbeDoSyQ%2BXC1o%3D",

    source="1852823608",

    x_auth_mode="client_auth",

    x_auth_password="------",

    x_auth_username=---------@sina.cn

    4.得到的返回结果示例如下:

oauth_token=160e537d530fd105669fd79a4f1dc286&oauth_token_secret=a9c46c081842bd08f55e8f0265d8fea3&user_id=160984721

     将返回结果按"&"拆开,oauth_token的值即为access_token。

    至此,以后每次用Access Token 去请求数据~

    此文根据新浪开放平台XAuth的内容进行整理~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值