1.OAuth
OAuth是一种国际通用的授权方式,它的特点是不需要用户在第三方应用输入用户名及密码。OAuth的技术说明可参看官方网站 http://oauth.net (英文)。
微博系统中,OAuth的Access token不会过期,只有用户手工撤销授权或收回您的app访问权限access token才会失效。
目前OAuth只支持授权读写访问,授权的应用可以获取用户数据及发表微博。目前暂时不支持只读权限授权。
2.认证流程及访问资源流程
腾讯微博API通过以下四个步骤来完成认证授权并访问或修改受限资源的流程
1.获取未授权的Request Token(temporary credentials)
2.请求用户授权Request Token
3.使用授权后的Request Token换取Access Token(token credentials)
4.使用 Access Token 访问或修改受保护资源
3.桌面应用的OAuth使用方式
OAuth协议规范由于需要输入密码之后跳转到callback URL, 因此并不十分适合桌面软件(非Web软件)。我们采用输入PIN的方式来激活纯桌面应用。具体流程为:
第三方应用软件向API调用获得request token
用户打开网页跳转到新浪微博网站输入用户名及密码。
验证通过之后,用户会看到一个PIN码。
新浪验证通过网页界面提示用户需要到应用软件输入PIN码。
第三方应用软件提示用户输入PIN码。
第三方应用软件将PIN作为oauth/access_token接口的oauth_verifier parameter参数传入,获取access_token.
API接口返回后续请求所需access_token
4.
RequestToken resToken=weboauth.request("http://localhost/s/callback.jsp");
response.sendRedirect(resToken.getAuthorizationURL());
// http://localhost/s/callback.jsp?oauth_token=68fbb7cadac41b0a152afe2e82a5a225&oauth_verifier=712361
AccessToken accessToken=weboauth.requstAccessToken(resToken,verifier);
//第二个参数每次只能用一次,发表微博内容不能重复,如果重复发会返回400错误
//这个accessToken不用每次访问都重新取,可以存到session里面用
weboauth.update(accessToken,"web方式发表微博4");
out.println("发表成功");