# JFinal-oauth2.0-login
**Repository Path**: 596392912/JFinal-oauth2.0-login
## Basic Information
- **Project Name**: JFinal-oauth2.0-login
- **Description**: oauth2.0第三方 qq、sina、baidu、renren、osc、豆瓣
等,登陆的简易封装!
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 439
- **Forks**: 218
- **Created**: 2014-04-08
- **Last Updated**: 2024-08-22
## Categories & Tags
**Categories**: oauth-dev
**Tags**: None
## README
##对第三方登陆的基础封装
集成`qq`、`sina`、`baidu`、`renren`、`osc`、`豆瓣` 等,第三方登陆api!
具体可参看Test.java测试,该版本已经深度依赖于JFinal,对于非JFinal用户,可以查看 tag `v0.2`: http://git.oschina.net/596392912/JFinal-oauth2.0-login/tree/v0.2/
`注意:`oauth.properties中含有我的网站的appkey可用来测试
测试时先更改`hosts`(具体可以`百度`)
```
127.0.0.1 www.dreamlu.net
```
### 测试过程为
1. 调用`getAuthorizeUrl()`获取`url`,在浏览器访问url,拿到回调的`code`参数
2. 调用`getUserInfoByCode()`传入刚获取的`code`!
# JFinal 中使用示例
## 跳转去授权
```java
//OAuth2.0标准协议建议,利用state参数来防止CSRF攻击。可存储于session或其他cache中
private static final String SESSION_STATE = "_SESSION_STATE_QQ_";
/**
* 构造授权请求url
* @param 设定文件
* @return void 返回类型
* @throws
*/
public void index() {
try {
String state = TokenUtil.randomState();
setSessionAttr(SESSION_STATE, state);
redirect(OauthQQ.me().getAuthorizeUrl(state));
} catch (Exception e) {
log.error(e.getMessage());
redirect("/");
}
}
```
## 回调可供参考
```java
/**
* 腾讯回调
* @Title: callback
* @param 设定文件
* @return void 返回类型
* @throws
* 返回json:http://wiki.connect.qq.com/get_user_info
*/
public void callback() {
String code = getPara("code");
String state = getPara("state");
String session_state = getSessionAttr(SESSION_STATE);
// 取消了授权
if (StringKit.isBlank(state) || StringKit.isBlank(session_state) || !state.equals(session_state) || StringKit.isBlank(code)) {
redirect("/admin");
return;
}
removeSessionAttr(SESSION_STATE);
try{
JSONObject userInfo = OauthQQ.me().getUserInfoByCode(code);
log.error(userInfo);
String type = "qq";
String openid = userInfo.getString("openid");
String nickname = userInfo.getString("nickname");
String photoUrl = userInfo.getString("figureurl_2");
// 将相关信息存储数据库...
}catch(Exception e){
log.error(e);
}
redirect("/admin");
}
```
## Maven
```xml
net.dreamlu
JFinal-oauth2.0-login
1.1.1
```
## jar包依赖
1. FastJson
2. JFinal3.0
## 注意事项
申请期间可以添加`测试账号`,为了快速的申请通过,请使用QQ官方的最大的那个(图标素材)
## 交流群
JFinal2.2视频-如梦技术 237587118
## 捐助共勉
## License
( The MIT License )