使用新浪最新使用的Oauth2.0进行认证
1.下载Java版的weibo SDK ,地址http://code.google.com/p/weibo4j/downloads/list
2.下载后如何使用呢?见http://code.google.com/p/weibo4j/
使用方法:
- 将下载后的项目导入Eclipse空间后,首先修改config.properties文件,在Config.properties里 client_ID :appkey 创建应用获取到的appkey client_SERCRET :app_secret 创建应用获取到的appsecret redirect_URI :回调地址 OAuth2的回调地址。回调地址在官方的使用方法中说明不是很明确,对应的应用回调页可在开发者登陆新浪微博开发平台之后, 进入我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页进行设置和查看, 应用回调页不可为空。修改后如下:
client_ID = 3267310683 client_SERCRET =18eb675a3a7d23a8943de81f2294880e baseURL=http://api.weibo.com/2/ redirect_URI=http://blog.csdn.net/junjunguoguo accessTokenURL=http://api.weibo.com/oauth2/access_token authorizeURL=http://api.weibo.com/oauth2/authorize
- 然后打开weibo4j.examples.oauth2包下的OAuth4Code.java
public class OAuth4Code {
public static void main(String [] args) throws WeiboException, IOException{
Oauth oauth = new Oauth();
BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
System.out.println(oauth.authorize("code"));
System.out.print("Hit enter when it's done.[Enter]:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();
Log.logInfo("code: " + code);
try{
System.out.println(oauth.getAccessTokenByCode(code));
} catch (WeiboException e) {
if(401 == e.getStatusCode()){
Log.logInfo("Unable to get the access token.");
}else{
e.printStackTrace();
}
}
}
运行后会弹出浏览器地址跳转到授权认证页面,如下图所示:
点击授权按钮,会跳到http://blog.csdn.net/junjunguoguo?code=deda7afea5d4f79a58eb480db3cb0086
- 然后在console输入code就能获取到oauth2的accesstoken
AccessToken [accessToken=2.00yhKJ5B6lSHZD63296a6aa0Ho1DGE, expireIn=86399, refreshToken=,uid=1272951014]
- 接下来即可调用example,再此以user/show接口为例:
public class ShowUser {
public static void main(String[] args) {
//String access_token = args[0];
Weibo weibo = new Weibo();
//将weibo.setToken(access_token);修改为
weibo.setToken("2.00yhKJ5B6lSHZD63296a6aa0Ho1DGE");
//String uid = args[1];
String uid="crystal_dreamer@sina.com";
Users um = new Users();
try {
User user = um.showUserById(uid);
Log.logInfo(user.toString());
} catch (WeiboException e) {
e.printStackTrace();
}
}
}
测试时,出现如下异常:
weibo4j.model.WeiboException: 401:Authentication credentials were missing or incorrect.
error:unsupport_protocol error_code:21320/2/users/show.json
at weibo4j.http.HttpClient.httpRequest(HttpClient.java:414)
at weibo4j.http.HttpClient.httpRequest(HttpClient.java:372)
at weibo4j.http.HttpClient.get(HttpClient.java:204)
at weibo4j.Users.showUserById(Users.java:29)
at weibo4j.examples.user.ShowUser.main(ShowUser.java:20)
查了半天又可能是自己的UID输入不正确
百度了下发现原来自己对微博uid认识有问题,参见http://blog.sina.com.cn/s/blog_9a773e3601010zz9.html
修改后发现仍然有问题,根据提示
unsupport_protocol error_code
我发现原来是我将config.properties中的https修改成了http,改回之后测试成功
在控制台中以JSON数据格式输出了我的详细信息。世界好美妙啊!!!!