private final Logger log = LoggerFactory.getLogger(this.getClass());//验证口令private static String verify_url = "https://graph.facebook.com/debug_token";//获取应用口令private static String app_url = "https://graph.facebook.com/v2.8/oauth/access_token";private static final long appTokenExpired = 2 * 60 * 60;@Value("${app.facebook.login.client-id}")private String clientId;@Value("${app.facebook.login.client-secret}")private String clientSecret;@Autowiredprivate RedisCache redisCache;@Autowiredprivate AccountManager accountManager;@Autowiredprivate UserForbiddenManager userForbiddenManager;@Autowiredprivate SmsService smsService;@Overridepublic AccountThirdBO process(LoginRequest req) {if (StringUtils.isEmpty(req.getAccessToken())) {throw new BusinessException(ResultEnum.PARA_ERR);}String provider = AccountConstant.ProviderEnum.facebook.toString();String thirdId = getFacebookUnionId(req.getAccessToken());AccountIndex accountIndex = accountManager.getAccountIndex(provider, thirdId);boolean unregistered = accountIndex == null;if (!unregistered) {accountManager.checkPhoneValidation(accountIndex.getUid());}List<ThirdInfo> thirdInfoList = new ArrayList<>();thirdInfoList.add(new ThirdInfo(provider, thirdId, thirdId, ""));return new AccountThirdBO(thirdInfoList,accountIndex == null ? null : accountIndex.getUid(),unregistered,false,unregistered);}private String getFacebookUnionId(String accessToken) {HashMap<String, String> params = new HashMap<String, String>();//应用口令String access_token = getAppToken();params.put("input_token", accessToken);params.put("access_token", access_token);String data = null;String result = HttpInvokeUtil.httpGet(verify_url, params);log.info("getFacebookUnionId result:{}", result);JSONObject jsonObject = JSON.parseObject(result);data = jsonObject.getString("data");JSONObject dataObject = JSON.parseObject(data);return dataObject.get("user_id").toString();}public String getAppToken() {String key = RedisConstant.FACEBOOK_LOGIN_APP_TOKEN;String appToken = redisCache.getCache(key, String.class);if (StringUtils.isEmpty(appToken)) {HashMap<String, String> params = new HashMap<String, String>();params.put("client_id", clientId);params.put("client_secret", clientSecret);params.put("grant_type", "client_credentials");String result = HttpInvokeUtil.httpGet(app_url, params);log.info("getAppToken result:{}", result);JSONObject jsonObject = JSON.parseObject(result);appToken = jsonObject.getString("access_token");redisCache.putCacheWithExpireTime(key, appToken, appTokenExpired);}return appToken;}
}

facebook第三方登陆服务器验证相关推荐

  1. 利用FaceBook实现第三方登陆(自定义登陆按钮,非官方按钮)并获取用户数据

    最近公司要写集成登陆SDK,具体集成那些我就不说了,其中就包含需要使用facebook登陆自己的app,于是我苦心研究facebook,写完后发现各种问题,对于问题我当然去查阅官方文档看怎么解决,结果 ...

  2. Android对接第三方登陆+支付(google+facebook)

    由于近期项目,要用到google+登陆和google  play商店应用内商品支付,以及facebook登陆 所以经过查看官网介绍和示例应用来实现下其中的功能, 下面是使用中遇到的问题,希望对你有用! ...

  3. 第三方登陆实践之基于OAuth的FACEBOOK Web Login(最新版)

    第三方登陆实践之基于OAuth的FACEBOOK Web Login(最新版) Facebook 登录简介 Facebook登陆实践 1.首先,登陆[Facebook开发者平台](https://de ...

  4. 少年歌行游戏一直显示连接服务器,少年歌行出现第三方登陆失败怎么办 解决方案一览...

    少年歌行出现第三方登陆失败怎么办,少年歌行是一款非常好玩的游戏,许多玩家被其优秀的内容和有趣的玩法所吸引.但是近日有小伙伴反应少年歌行出现第三方登陆失败,小编这里整理了一些少年歌行出现第三方登陆失败的 ...

  5. 刀剑情缘服务器维护,刀剑情缘出现第三方登陆失败怎么办 解决方案一览

    刀剑情缘出现第三方登陆失败怎么办,刀剑情缘是一款非常好玩的游戏,许多玩家被其优秀的内容和有趣的玩法所吸引.但是近日有小伙伴反应刀剑情缘出现第三方登陆失败,小编这里整理了一些刀剑情缘出现第三方登陆失败的 ...

  6. 传奇3账号卡正在连接服务器,传奇来了出现第三方登陆失败怎么办 解决方案一览...

    传奇来了出现第三方登陆失败怎么办,传奇来了是一款非常好玩的游戏,许多玩家被其优秀的内容和有趣的玩法所吸引.但是近日有小伙伴反应传奇来了出现第三方登陆失败,小编这里整理了一些传奇来了出现第三方登陆失败的 ...

  7. Facebook实现第三方登陆(WEB)并获取用户信息

    [size=medium][u][b]网站如何实现用FaceBook登录[/b][/u][/size] [color=blue]1:登陆https://developers.facebook.com/ ...

  8. 【skynet】 loginserver 登陆服务器模板 登录验证

    云风大佬的登陆服务器模板 登录验证,登陆流程协议内容: S 表示服务端,C表示客户端,加粗为server端 不加粗为client端 1.S 产生随机数challenge(base64编码 二进制流), ...

  9. 登陆163邮箱显示服务器验证失败是什么原因?微信怎么登陆邮箱?

    周末休息的时候呆在家里,突然收到老板打来的电话,说有一封紧急邮件要马上回复.于是急急忙忙打开电脑登录企业邮箱,却发现登录邮箱时显示服务器验证失败,这是怎么回事呢?有没有其他电子邮箱入口来登录邮箱?其实 ...

  10. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 第三方登录流程 OAuth 应用 OAuth 实现 Face ...

最新文章

  1. AOP开发——在不修改源代码的前提下,对类里面的方法进行增强 : 前置 后置 环绕 异常||如何得到目标方法的参数和返回值
  2. 【树莓派】为Ubuntu for ARM 更换中国软件源
  3. TurboMail邮件服务器帮你应付电子邮件归档危机
  4. 四款主流测试工具的测试流程
  5. jquery获取父级元素、子级元素、兄弟元素
  6. 清华ACL'22 | 一文读懂刘知远所在实验室18篇论文详情
  7. Android HandlerThread和IntentService
  8. BZOJ1815 SHOI2006有色图(Polya定理)
  9. Linux-lsof
  10. 西北大学计算机课表,西北大学课表_2
  11. pycharm格式化的html_pycharm格式化代码 常用快捷键
  12. php在线拍照代码,JQ+PHP实现浏览器webcam摄像头在线定时自动拍照存储照片
  13. scrapy框架初识
  14. PostgreSQL下载、安装和配置使用
  15. UVA12304直线,圆,点的综合应用
  16. 什么是软连接,以及软连接在linux系统中的用法
  17. Android开发之CardView卡片布局
  18. 【街道可步行性】步行通达性对街区空间活力与交往的影响 | 上海城市规划
  19. 全球及中国美罗培南原料药行业十四五需求预测及投资发展战略研究报告2022年版
  20. C# 将所有的DLL文件 打包到 exe里面,就是说整个项目只有一个exe

热门文章

  1. Altium Designer原理图与PCB设计学习笔记6——AD如何在多个原理图中查找相同的网络标号
  2. 写论文同义替换的软件.v.1.2.3
  3. 程序员节日快乐用c语言表达,祝程序员们节日快乐!
  4. 浙大计算机学院12月12日毅行,感谢参与lt;2020年秋季浙大飘渺毅行gt;
  5. discuz 模板php代码,自定义HTML模板DIY支持PHP代码解析
  6. DDD(领域驱动设计)系列主题:基础概念对象介绍(实体,值对象,仓储等)
  7. 第五季完美童模 形象大使施承妤现场走秀回顾
  8. Pandas数据分析(十年期国债收益率 与 十年期国债期货价格的相关性)
  9. Java面试题----基础
  10. 电子密码锁的设计(Verilog HDL实现)