读书人

关于新浪微博与腾讯微博从Oauth1.0升级

发布时间: 2012-06-20 20:37:21 作者: rapoo

关于新浪微博与腾讯微博从Oauth1.0升级到Oauth2.0的过程


新浪微博

曾经@微博API 新浪那边表示 旧版的Oauth 1.0a将在不久的2012.9.1号停止。这个是一个很苦逼的消息。意味着涉及微博的都要修改。

Oauth2.0相比较于Oauth1.0的话 流程少了很多,其中一点就是签名。之前都是用signpost这个开源项目辅助。现在完全可以去掉了


好吧。废话不说了。

新浪微博Oauth2.0认证的官方说明

http://open.weibo.com/wiki/Oauth2


简单步骤:1获取code 2获取accessToken 3使用accessToken访问api

新浪的这份授权机制还是比较详细。理解起来比较容易

接口说明OAuth2/authorize请求用户授权TokenOAuth2/access_token获取授权过的Access TokenOAuth2/get_oauth2_token OAuth1.0的Access Token更换至OAuth2.0的Access Token

步骤1http://open.weibo.com/wiki/Oauth2/authorize

获取code

请求参数 必选类型及范围说明client_idtruestring申请应用时分配的AppKey。redirect_uritruestring授权回调地址,站外应用需与设置的回调地址一致,站内应用需填写canvas page的地址。response_typefalsestring返回类型,支持code、token,默认值为code。statefalsestring用于保持请求和回调的状态,在回调时,会在Query Parameter中回传该参数。displayfalsestring授权页面的终端类型,取值见下面的说明。


https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

值得注意的是这边的redirect_uri 必须与 申请的应用那边设置(高级设置里面)的回调地址一致。否则就会出现 error:redirect_uri_mismatch.

这是网页载入授权界面,用户填完账号密码之后按下确定
服务器将返回一个“回调地址+code=xxxxx”的URL(如果是腾讯微博还有openid和openkey等等)
把code是步骤2的关键

步骤2
获取accessToken

API https://api.weibo.com/oauth2/access_token
将code等参数 以POST传给服务器将返回

 {       "access_token": "ACCESS_TOKEN",       "expires_in": 1234,       "remind_in":"798114",       "uid":"12341234" }

这些数据都是要做数据持久化管理的。
腾讯微博返回稍有不同,但是并不影响

步骤3
访问API



研究中遇到的一些问题
1.腾讯微博 那群脑残的腾讯微博把appke和secret变成 ClientID和ClientSecret

oAuth.setClientId(StatcParame.T_CONSUMER_KEY);
oAuth.setClientSecret(StatcParame.T_CONSUMER_SECRET);

下面直接贴源码了

1
sina
webview承载授权页面的设置


源码之后上传。

联系 zhangnianxiang@gmail.com


读书人网 >移动开发

热点推荐