开放平台-web实现人人网第三方登录
应用场景
操作步骤
登录流程
案例实战
本地开发环境准备
前端登录跳转页面
<html><head><title>人人网登录跳转</title><script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js" type="text/javascript"></script><script type="text/javascript">//应用的APIKEYvar apiKey = "3ce9cb1e264f4e93b1f38807be66e629";//成功授权后的回调地址var redirectUrl = "@@{openapi.Renrens.callback()}";var authorizeUrl = "https://graph.renren.com/oauth/authorize?"var queryParams = ['client_id=' + apiKey,'redirect_uri=' + redirectUrl,'response_type=code'];var url = authorizeUrl + queryParams.join('&');//打开授权登录页面 window.location.href= url;</script></head><body></body> </html>
server端处理回调,同步信息
/*** 授权回调** @param code* @param error*/public static void callback(String code) {if (!StringUtils.isEmpty(code)) {error("授权失败");}// 根据code换取accesstoken,包括用户信息// ...String callbackUrl = RouteContext.getUrl("openapi.Renrens.callback", Collections.EMPTY_MAP,true);RenrenToken token = RenApi.getTokenInfo(code, callbackUrl);if (token == null) {error("授权失败:无法获取连接系统");}render(code, token);}
/*** 返回token数据对象* * <pre>* * { * "token_type":"bearer",* "expires_in":2595096,* "refresh_token":"127021|0.KAS3b8doSitHk6RLDtitb2VY8PjktTRA.229819774.1376381303243",* "user":{* "id":229819700,* "name":"二小姐",* "avatar":[* { "type":"avatar",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_head_KFTQ_d536000000d0111b.jpg"* },* { "type":"tiny",* "url":"http://hdn.xnimg.cn/photos/hdn221/20130805/2055/tiny_jYQe_ec4300051e7a113f.jpg"* },* { "type":"main",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_main_ksPJ_d536000000d0111b.jpg"},* { "type":"large",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_large_yxZz_d536000000d0111b.jpg"* }* ]* },* "access_token":"127066|6.08718aa138db0578dda3250f33bads6e.2592000.1378976400-229819774"* "scope":"read_user_feed read_user_album",* </pre>* * @author littleatp* @createDate 2015年4月14日* */ public class RenrenToken {public String token_type;public int expires_in;public String refresh_token;public String access_token;public String scope;public RenrenUser user; }
/*** 人人网用户信息* * <pre>* "user":{* "id":229819700,* "name":"二小姐",* "avatar":[* { "type":"avatar",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_head_KFTQ_d536000000d0111b.jpg"* },* { "type":"tiny",* "url":"http://hdn.xnimg.cn/photos/hdn221/20130805/2055/tiny_jYQe_ec4300051e7a113f.jpg"* },* { "type":"main",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_main_ksPJ_d536000000d0111b.jpg"},* { "type":"large",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_large_yxZz_d536000000d0111b.jpg"* }* ]* },* </pre>* * @author littleatp* @createDate 2015年4月14日* */ public class RenrenUser {public long id;public String name;public List<RenrenAvatar> avatar;public String getAvatarUrl() {if (avatar == null || avatar.isEmpty()) {return "";}return avatar.get(0).url;}public static class RenrenAvatar {public String type;public String url;} }
/*** 人人网API* * <pre>* 登录流程:* * 1 前端跳转人人网授权(code方式)* 2 回调获得authorize code* 3 通过code换取access_token* 4 获得token及用户信息* * 参考文档:* http://wiki.dev.renren.com/wiki/Authentication* </pre>* * * @author littleatp* @createDate 2015年4月10日* */ public class RenApi {public static String apiKey = "xxx";public static String secretKey = "xxx";public static String baseUrl = "https://graph.renren.com/oauth";protected static final String URL_GET_TOKEN = baseUrl + "/token?grant_type=authorization_code"+ "&client_id=%s&client_secret=%s&code=%s&redirect_uri=%s";protected static final long ACCESS_TIMEOUT = 15;protected static final String DEF_APP_TOKEN_EXPIRE = "3h";/*** 获取token信息* * <pre>* http://wiki.dev.renren.com/wiki/Authentication#.E5.AE.A2.E6.88.B7.E7.AB.AF.E6.8E.88.E6.9D.83* 返回token的同时也附带了用户信息* * 调用地址:* https://graph.renren.com/oauth/token* * 参数* grant_type:使用Authorization Code 作为Access Grant时,此值固定为“authorization_code”;* client_id:在开发者中心注册应用时获得的API Key;* client_secret:在开发者中心注册应用时获得的Secret Key。Secret Key是应用的保密信息,请不要将其嵌入到服务端以外的代码里;* redirect_uri:必须与获取Authorization Code时传递的“redirect_uri”保持一致;* code:上述过程中获得的Authorization Code。* * 返回结果如下:* { * "token_type":"bearer",* "expires_in":2595096,* "refresh_token":"127021|0.KAS3b8doSitHk6RLDtitb2VY8PjktTRA.229819774.1376381303243",* "user":{* "id":229819700,* "name":"二小姐",* "avatar":[* { "type":"avatar",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_head_KFTQ_d536000000d0111b.jpg"* },* { "type":"tiny",* "url":"http://hdn.xnimg.cn/photos/hdn221/20130805/2055/tiny_jYQe_ec4300051e7a113f.jpg"* },* { "type":"main",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_main_ksPJ_d536000000d0111b.jpg"},* { "type":"large",* "url":"http://hdn.xnimg.cn/photos/hdn121/20130805/2055/h_large_yxZz_d536000000d0111b.jpg"* }* ]* },* "access_token":"127066|6.08718aa138db0578dda3250f33bads6e.2592000.1378976400-229819774"* "scope":"read_user_feed read_user_album",* }* * 错误返回:* {* "error": "invalid_grant",* "error_code": 20204* "error_description": "Invalid authorization code: 9OCQp3IzRcwtSRPKOEUKiRRsz9SUNgdE"* }* http://wiki.dev.renren.com/wiki/%E9%94%99%E8%AF%AF%E5%93%8D%E5%BA%94* </pre>* * @param accessToken* @return*/public static RenrenToken getTokenInfo(String code, String callbackUrl) {if (StringUtils.isEmpty(code)) {return null;}String url = String.format(URL_GET_TOKEN, apiKey, secretKey, code, callbackUrl);String resultString = DefaultHttp.get(url, ACCESS_TIMEOUT, GlobalConstants.UTF_8);Logger.debug("[sso-renren]get token. use url '%s'", url);RenrenToken token = JsonUtil.fromJson(resultString, RenrenToken.class);if (token == null || StringUtils.isEmpty(token.access_token)) {Logger.debug("[sso-renren]get token failed, with result of '%s'", resultString);return null;}Logger.debug("[sso-renren]get token success, with result of '%s'", resultString);return token;} }
关于CSRF
常见问题
开放平台-web实现人人网第三方登录相关推荐
- web实现QQ第三方登录 开放平台-web实现QQ第三方登录
应用场景 web应用通过QQ登录授权实现第三方登录. 操作步骤 1 注册成为QQ互联平台开发者,http://connect.qq.com/ 2 准备一个可访问的域名,如dev.foo.com 3 ...
- web实现QQ第三方登录
web实现QQ第三方登录 开放平台-web实现QQ第三方登录 应用场景 web应用通过QQ登录授权实现第三方登录. 操作步骤 1 注册成为QQ互联平台开发者, http://connect.qq.c ...
- 【49.Auth2.0认证与授权过程-微博开放平台认证授权过程-百度开放平台认证授权过程-社交登录实现(微博授权)-分布式Session问题与解决方案-SpringSession整合-Redis】
一.知识回顾 [0.三高商城系统的专题专栏都帮你整理好了,请点击这里!] [1-系统架构演进过程] [2-微服务系统架构需求] [3-高性能.高并发.高可用的三高商城系统项目介绍] [4-Linux云 ...
- Java Web 实现 QQ第三方登录
java web 实现QQ第三方登录功能 首先点击该链接进入腾讯开放平台 ,注册成为开发者 2.注册成功后到这个页面 3.创建web应用 4.填写基本信息(以前的这里会让你填写回调地址 ,现在改了) ...
- web接入QQ第三方登录
原文地址:https://blog.csdn.net/cwfjimogudan/article/details/54135957 这是第三方登录的第二篇,关于web接入微博第三方登录可以参考我之前的博 ...
- 微信开放平台PC端扫码登录
最近公司给我安排一个微信登录的功能,需求是这样的: 1.登录授权 点击二维码图标后,登录界面切换为如下样式(二维码),微信扫描二维码并授权,即可成功登录: 若当前账号未绑定微信账号,扫描后提示& ...
- 韩国 naver web网页版第三方登录 naver网页登录
韩国 naver web网页版第三方登录 <!DOCTYPE html> <html lang="en"><head><meta char ...
- 韩国 kakaotalk web网页版第三方登录示例 kakaotalk网页版
韩国 kakaotalk web网页版第三方登录示例 先跳转 授权 https://kauth.kakao.com/oauth/authorize?client_id="+restApi+& ...
- maven的web工程QQ第三方登录HTML、
声明.使用JDK9.idea2018.02 .maven3.5.4.tomcat9 maven的web工程QQ第三方登录接口引入,听起来简单,做完以后也很简单,这里使用 java SDK : 写的文 ...
- web接入微博第三方登录
微博第三方登录 最近刚好在学习第三方登录,这里先做一下微博第三方登录的记录,因为qq第三方登录必须要完成网站备案后才能进行,后面再进行补充. 大致可以分成下面几个步骤 下面根据我自己的实现过程做一下总 ...
最新文章
- Redis 6.0 新特性-多线程连环13问!
- opensuse 安装java_OpenSUSE Leap 42.3 安装java(Oracle jre)
- 昌吉学院计算机工程系毕业后安排工作嘛,0昌吉学院.doc
- 使用libsvm对MNIST数据集进行实验
- 李牛(Linux)打包
- 在mac上用parallels创建双windows虚拟机调试windows驱动
- Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
- java算法按指定数量读取集合或数组中的值
- MITK通用插件(四)The Dicom Browser Plugin
- 2020腾讯广告大赛 :13.5 baseline
- 输入法android2.0,搜狗手机输入法forAndroid2.0版七大革命性升级
- JVET专家组下360Lib全景视频投影格式测试平台
- 搭建云平台过程中的错误及解决方案1
- EF 配置Oracle数据库 EF ORA-01918: 用户 'dbo' 不存在
- Luogu3426 [POI2005]SZA-Template (KMP)(未完成)
- mysql 分离 实时读_MySQL深入利用Ameoba实现读写分离
- Android聊天软件的开发(七)--聊天通信
- history of program atan2(y,x)和pow(x,y)
- 开机出现checking file system on C或者D E F盘符的解决方法
- 首届.NET Core开源峰会 2018年5月20日