|
|
第1行: |
第1行: |
− | ==关于xAuth==
| + | {{tip_doc_trash}} |
− | xAuth认证实际上是OAuth认证的简化版。目前xAuth只对桌面客户端和移动客户端开放申请。Web应用请使用OAuth。<br/>
| + | |
| | | |
| | | |
− | | + | {{#a:nobtns|noheading}} |
− | ==xAuth申请需求==
| + | __NOTOC__ |
− | 因为xAuth依然会获得用户明文密码,xAuth实行有限开放。开发初期建议使用桌面客户端使用OAuth,移动客户端使用WAP 1.0或者2.0版页面授权。当用户数量达到一定规模后再使用xAuth提升用户体验。<br/>
| + | |
− | xAuth申请条件:
| + | |
− | # 应用分类属于桌面客户端、手机客户端。 | + | |
− | # 应用本身已经通过开放平台文案、广场审核,并在广场上展示超过15天。
| + | |
− | # 应用使用人数在3000以上。
| + | |
− | # 应用本身功能与微博关联紧密。
| + | |
− | <br/>
| + | |
− | xAuth申请需提交材料:<br/>
| + | |
− | '''企业''':
| + | |
− | # 营业执照副本复印件
| + | |
− | # 法人身份证复印件
| + | |
− | # 税务登记副本复印件
| + | |
− | # 应用产品说明文档:包括产品介绍、运营推广策略、改进目标等
| + | |
− |
| + | |
− | <br/>
| + | |
− | '''个人''':
| + | |
− | # 开发者身份证复印件
| + | |
− | # 应用产品说明文档:包括产品介绍、运营推广策略、改进目标等
| + | |
− | xAuth申请通过后,需签订合作开发者协议
| + | |
− | | + | |
− | 请将上述资料和AppKey、应用名称一起发送邮件到[mailto:weibo_app@vip.sina.com weibo_app@vip.sina.com]来申请xAuth的使用权。
| + | |
− | | + | |
− | ==xAuth简介==
| + | |
− | 使用xAuth认证方式,您仍然需要了解如何生成OAuth签名。
| + | |
− | | + | |
− | 为了方便桌面应用和移动应用,特别是那些缺乏浏览器支持的应用,xAuth认证为这类应用提供了一种使用用户名和密码来获取OAuth的Access Token的方式。 采用xAuth认证的桌面应用和移动应用可以跳过oauth/request_token(获取Request Token)以及oauth/authorize(授权Request Token)两步,只要提供了username和password以后,即可直接通过oauth/access_token接口得到Access Token。
| + | |
− | | + | |
− | ==使用xAuth==
| + | |
− | 要使用xAuth认证,需要经过以下步骤:<br/>
| + | |
− | <br/>
| + | |
− | 1. 申请xAuth认证使用资格:将您的应用名称、APPKEY、为何要使用xAuth认证方式等详细信息发给[mailto:weibo_app@vip.sina.com weibo_app@vip.sina.com]来申请xAuth的使用权。如果您已经获得xAuth使用权,请直接看第2步。<br/>
| + | |
− | <br/>
| + | |
− | 2. 获得xAuth的使用权后,为了能够生成OAuth签名,我们首先参考[[Oauth#.E8.AF.B7.E6.B1.82.E7.AD.BE.E5.90.8D|如何生成OAuth签名]],生成OAuth的BaseString。注意,生成BaseString时需要传入如下几个参数:<br/>
| + | |
− | <br/>
| + | |
− | * 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”。
| + | |
− | <br/>
| + | |
− | 生成的BaseString示例如下:<br/>
| + | |
− | <br/>
| + | |
− | <pre>
| + | |
− | 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
| + | |
− | </pre>
| + | |
− | <br/>
| + | |
− | 3. 用刚刚生成的BaseString,经过HMAC-SHA1算法生成oauth_signature,示例如下: <br/>
| + | |
− | <pre>
| + | |
− | iviIHhwXWmFLliZbeDoSyQ+XC1o=
| + | |
− | </pre>
| + | |
− | <br/>
| + | |
− | 4. 将以下参数封装成HTTP请求头,并向[[oauth/access_token]]接口提交POST请求:<br/>
| + | |
− | <br/>
| + | |
− | * x_auth_username,
| + | |
− | * x_auth_password,
| + | |
− | * x_auth_mode,
| + | |
− | * oauth_consumer_key,
| + | |
− | * oauth_signature_method,
| + | |
− | * oauth_signature,
| + | |
− | * oauth_timestamp,
| + | |
− | * oauth_nonce,
| + | |
− | * oauth_version,
| + | |
− | * source
| + | |
− | <br/>
| + | |
− | <pre>
| + | |
− | Authorization: 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"
| + | |
− | </pre>
| + | |
− | <br/>
| + | |
− | 5. 得到的返回结果示例如下:<br/>
| + | |
− | <pre>
| + | |
− | oauth_token=160e537d530fd105669fd79a4f1dc286&oauth_token_secret=a9c46c081842bd08f55e8f0265d8fea3&user_id=160984721
| + | |
− | </pre>
| + | |
− | <br/>
| + | |
− | 将返回结果按"&"拆开,oauth_token的值即为access_token。<br/>
| + | |
− | | + | |
− | | + | |
− | | + | |
− | == oauth/access_token ==
| + | |
− | 第三放应用使用开始的request_token来换取用户授权过的Access_token。在xAuth认证方式中,也可以直接获取Access Token
| + | |
− | | + | |
− | ==URL==
| + | |
− | http://api.t.sina.com.cn/oauth/access_token
| + | |
− |
| + | |
− | ==格式==
| + | |
− | 标准的OAuth http返回格式
| + | |
− |
| + | |
− | ==HTTP请求方式==
| + | |
− | POST
| + | |
− | | + | |
− | ==请求数限制==
| + | |
− | false
| + | |
− | | + | |
− | ==请求参数==
| + | |
− | * 参考[http://oauth.net/core/1.0a/#anchor9 OAuth的第6章]
| + | |
− | * x_auth_username:用户名(即用户在新浪通行证中使用的邮箱。),xAuth方式必填。
| + | |
− | * x_auth_password:密码,xAuth方式必填。
| + | |
− | * x_auth_mode:标识字段,这里必须是"client_auth",xAuth方式必填。
| + | |
− | * oauth_consumer_key: 创建应用时生成的APP KEY。
| + | |
− | * oauth_token:经过用户授权的Request Token。
| + | |
− | * oauth_signature_method: 签名方法,建议使用“HMAC-SHA1”。
| + | |
− | * oauth_timestamp:时间戳。生成Base String时的时间戳。
| + | |
− | * oauth_nonce:单次值,一个随机字符串,防止重复攻击。该参数只支持ASCII码的字符串.
| + | |
− | * oauth_version : OAuth协议版本。填写“1.0”。
| + | |
− | * oauth_verifier: 可选。在[[oauth/authorize]]这一步中,微博给出的认证码。
| + | |
− | * oauth_signature:签名值,是由[[Oauth#.E8.AF.B7.E6.B1.82.E7.AD.BE.E5.90.8D|根据上面的几个参数生成的 Base String]]经HMAC-SHA1算法计算得出。
| + | |
− | | + | |
− | ==使用说明==
| + | |
− | ===返回值===
| + | |
− | <pre>
| + | |
− | oauth_token=c849d68edfd4d01dbb60c73e60c04360&oauth_token_secret=c7966260e5384f535222aa7aec7002c2&user_id=1567751400
| + | |
− | </pre>
| + | |
− | ==使用示例==
| + | |
− | * 参见[[OAuth]]说明。
| + | |
− | | + | |
− | | + | |
− | ===PHP示例===
| + | |
− | 请从 [[SDK | 微博SDK开发包下载]] 处下载PHP SDK(支持OAuth验证之版本)<br>
| + | |
− | 代码示例如下:
| + | |
− | <pre>
| + | |
− | //oauth/access_token
| + | |
− | $o = new WeiboOAuth( WB_AKEY ,
| + | |
− | WB_SKEY ,
| + | |
− | $_SESSION['keys']['oauth_token'] ,
| + | |
− | $_SESSION['keys']['oauth_token_secret'] );
| + | |
− | | + | |
− | $last_key = $o->getAccessToken( $_REQUEST['oauth_verifier'] ) ;
| + | |
− | echo($last_key['oauth_token']);
| + | |
− | </pre>
| + | |