原创:沉默是金
QQ:79284467
新浪微博昵称:卜丝儿
效果图:
JAVA语言的基于OAUTH2.0的WEB项目
简介:OAUTHA2.0 :新浪微博开放平台,提供众多接口API,java基于OAUTH2.0的新浪微博授权认证,新浪微博登录,数据抓取,查看,发微博等
功能:1.第三方登录,即用新浪微博账号登录,登陆后可获取账号的相关信息
2.数据抓取,新浪微博账号登录后,可获取如最新微博,最热微博,我的微博等数据,把数据从新浪服务器上抓取到自己的WEB项目中,可保存于自己的本地数据库
步骤: 1.搭建JAVA,WEB框架
2.http://open.weibo.com/ 新浪微博开放平台,下载JAVA版SDK,其中包和类复制在WEB项目内,引入其中jar包
3.注册新浪微博测试应用:
1》新浪开放平台首页--》微链接--》创建应用--》网页应用
2》填写名称,地址--》创建
3》填写更多详细信息--》记下appkey,appsecret,提交
4》点击应用管理--》高级信息,编辑授权回调页(用于新浪微博登录,授权以后的跳转页面地址,这里用一个servlet地址,即新浪微博登录后,成功授权,然后跳转一个servlet,servlet跳转页面到WEB应用主页,例如:http://127.0.0.1:8080/project/redirectServlet)
5》myeclipse--》web项目--》config.properties--》修改client_ID为appkey,修改client_SERCRET为appsecret,修改redirect_URI为授权回调页,其他不变
4.获取ACCESS_TOKEN,进行授权登录认证
1>配置WEB 的登录按钮响应的servlet类,可以直接在浏览器调该servlet地址,用于测试
package com.wy.webiter;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import weibo4j.Oauth;
import weibo4j.model.WeiboException;
import weibo4j.util.BareBonesBrowserLaunch;
public class OAuth4Code extends HttpServlet {
/**
* 博客登录
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Oauth oauth = new Oauth();
try {
BareBonesBrowserLaunch.openURL(oauth.authorize("code", ""));
} catch (WeiboException e) {
System.out.println(e);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}}
2》配置WEB 的授权成功回调的servlet类,该servlet地址为创建应用的授权回调页面,新浪账号授权成功后回调该servlet地址,servlet中用于获取授权的新浪用户的信息等
package com.wy.webiter;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import weibo4j.Oauth;
import weibo4j.Users;
import weibo4j.model.User;
import weibo4j.model.WeiboException;
import com.wy.dao.ConsumerDao;
import com.wy.form.ConsumerForm;
import com.wy.tool.Chinese;
public class RedirectServlet extends HttpServlet {
/**
* 回调servlet
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String code = request.getParameter("code");
try {
Oauth oauth = new Oauth();
String token = oauth.getAccessTokenByCode(code).toString();
System.out.println(token);
String str[] = token.split(",");
String accessToken = str[0].split("=")[1];
System.out.println(accessToken);
String str1[] = str[3].split("]");
String uid = str1[0].split("=")[1];
System.out.println(uid);
Users um = new Users();
um.client.setToken(accessToken);
User user = um.showUserById(uid);
//通过user的get方法可以获得其属性,具体属性可按ctrl点击User类,进入User类查看
System.out.println("hehe :" + user.toString());
RequestDispatcher requestDispatcher = request.getRequestDispatcher("你的JSP页面.jsp");
requestDispatcher.forward(request, response);
}
catch (WeiboException e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
/**
* 取到user对象的数据后,可放入request对象中传到页面中显示(也可用json传递,WEB基础知识),
* 也可通过JDBC把数据存入数据库
* 总之,数据取到了,想怎么样折腾都是由你
* SDK包中有一个example包,里面有很多实例API,具体例子的作用,请对照新浪开放平台官网的API,
* 打开一个实例,例如showUser类修改响应参数,uid改为user对象的uid属性,accesstoken改为上面获取accesstoken
* 这几个值可以放在session中存储,用时便于取出
* 右键run javaApplication,控制台即能看到通过新浪服务器取到的数据
* API实例需要用时可直接复制放入一个新建的servlet类中,(类似上面的servlet授权),把实例转化为web项目**/
5.测试级的应用在使用时只能用开发者的新浪微博登录授权认证,可手动添加15个测试账户
1》登录新浪微博开放平台,进入管理应用 2》点击我的应用进入具体信息 3》测试信息,右侧编辑,添加昵称 4》此时添加的用户即有权访问你的应用并且进行授权认证2014--5--13 沉默是金
QQ:79284467