当前位置: 首页 > news >正文

java后端-海外登录(谷歌/FaceBook)

前言

        由于最近公司的项目要在海外运行,因此需要对接海外的登录,目前就是谷歌和facebook两种,后面支付也是需要的,后续再进行书写

谷歌登录

        这个相对比较容易,而且只提供给安卓即可,废话就不多说了,直接贴解决方案

引入maven依赖
<dependency><groupId>com.google.api-client</groupId><artifactId>google-api-client</artifactId><version>1.35.2</version>
</dependency>
<dependency><groupId>com.google.api-client</groupId><artifactId>google-api-client-android</artifactId><version>1.35.2</version>
</dependency>
<dependency><groupId>com.google.oauth-client</groupId><artifactId>google-oauth-client-java6</artifactId><version>1.33.0</version>
</dependency>
<dependency><groupId>com.google.oauth-client</groupId><artifactId>google-oauth-client-jetty</artifactId><version>1.33.0</version><scope>runtime</scope>
</dependency>
<dependency><groupId>com.google.apis</groupId><artifactId>google-api-services-oauth2</artifactId><version>v2-rev20200213-2.0.0</version>
</dependency>
工具类
@Slf4j
public class IdTokenVerifier {//安卓信息private static final String CLIENT_ID = Constants.GOOGLE_APPLE_ID; // 替换为你的 Android 客户端 IDpublic static GoogleIdToken.Payload verifyToken(String idTokenString) throws GeneralSecurityException, IOException {NetHttpTransport transport = new NetHttpTransport();GsonFactory jsonFactory = new GsonFactory();GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory).setAudience(Collections.singletonList(CLIENT_ID)).build();GoogleIdToken idToken = verifier.verify(idTokenString);if (idToken != null) {log.info("verifyToken-返回的数据为{}", JsonUtils.Object2Json(idToken));return idToken.getPayload();} else {// 无效的 ID tokenlog.info("verifyToken-返回的数据为null");return null;}}public static boolean checkNonce(String nonce, GoogleIdToken.Payload payload) {if(payload == null) {return false;}Object object = payload.get("nonce");if(object == null) {return false;}String requestNonce = (String) object;boolean equals = Objects.equals(nonce, requestNonce);log.info("checkNonce-检验结果为{}", equals);return equals;}public static void main(String[] args) throws GeneralSecurityException, IOException {// 示例用法:String receivedIdToken = "eyJfN5g"; // 替换为实际接收到的 idTokenGoogleIdToken.Payload payload = verifyToken(receivedIdToken);
//        GoogleIdToken.Payload payload = (GoogleIdToken.Payload) JsonUtils.string2Object(payloadString, GoogleIdToken.Payload.class);System.out.println(JsonUtils.Object2Json(payload));if (payload != null) {String userId = payload.getSubject();String email = payload.getEmail();boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());String name = (String) payload.get("name");String pictureUrl = (String) payload.get("picture");String givenName = (String) payload.get("given_name");String familyName = (String) payload.get("family_name");String locale = (String) payload.get("locale");System.out.println("User ID: " + userId);System.out.println("Email: " + email);System.out.println("Email Verified: " + emailVerified);System.out.println("Name: " + name);System.out.println("Picture URL: " + pictureUrl);System.out.println("Given Name: " + givenName);System.out.println("Family Name: " + familyName);System.out.println("Locale: " + locale);} else {System.out.println("Invalid ID token.");}}

只需要替换CLIENT_ID 为安卓的id,token也是安卓传给你的,就可以了,是不是很简单?

FaceBook登录

        这个其实也不复杂,主要是IOS有两种情况,老版本的方式跟安卓的方式是一样的,下面先说老的方式

IOS旧版/安卓

参考文章:   第三方登录(Facebook) java验证-CSDN博客   可行,但是有乱码问题,而且要自己写,麻烦点,没使用

我用的是工具包,也不复杂, 还是直接说做法

引入maven依赖
<dependency><groupId>com.restfb</groupId><artifactId>restfb</artifactId><version>2024.11.0</version>
</dependency>
工具类
 public static void main(String[] args) throws Exception{token = "EAAVMz9Vc1BgBO8iE8yMgNza4ZCdnBDqZCMJRoGHJaykZAOIwLetZAluFdUEng31WUexZA16LpXQ2YWEYY2dj6TTPnv7Cq8DjXKANAZAy1WCpntLeykZCqnSy0Cy7S4ZCASVZA1cAVIlaGtw7mhV0NCvi0pKiTlej4C9fYbZA0yAlZBee999ZCZBa2Uf5dB12ZAG2jcKfmJg6gZDZD";
//                checkLoginWithToken(token);DefaultFacebookClient defaultFacebookClient = new DefaultFacebookClient(token, Version.VERSION_11_0);User re = defaultFacebookClient.fetchObject("me.permissions ", User.class, Parameter.with("fields", Parameter.with("fields", "id,cover,email,gender")));System.out.println(re.getName());System.out.println(re.getEmail());System.out.println(re.getFirstName());System.out.println(re.getBirthday());}

注: 其实就是两句话,底层都封装好了,

Parameter.with("fields", "id,cover,email,gender") 这个要输入一些,需要哪些就指定哪些

IOS新版

这个目前还不知道,到时确定了再回来更新咯

相关文章:

  • ETL 代表什么?ETL 开发主要做什么?
  • DeepSeek:以开源之力,引领AI技术新风潮
  • ShenNiusModularity项目源码学习(28:ShenNius.Admin.Mvc项目分析-13)
  • IPv4 地址嵌入 IPv6 的前缀转换方式详解
  • 2025年全国青少年信息素养大赛C++小学全年级初赛试题(解析版)
  • flutter getx路由管理、状态管理、路由守卫中间件、永久储存get_storage
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的管理与运营策略研究
  • flutter dart 函数语法
  • CAD如何导出PDF?PDF如何转CAD?详细教程来了
  • 十五、Hive 窗口函数
  • Ctrl+鼠标滚动阻止页面放大/缩小
  • 算法第26天 | 贪心算法、455.分发饼干、376. 摆动序列、 53. 最大子序和
  • LeetCode:贪心算法
  • 贪心算法——分数背包问题
  • 元宇宙赛道新势力:芯谷产业园创新业务如何重构产业格局
  • 页面置换算法概述
  • CaDDN- Categorical Depth Distribution Network for Monocular 3D Object Detection
  • PYTORCH_CUDA_ALLOC_CONF基本原理和具体示例
  • DDR5和LPDDR5的CA采样时刻对比,含DDR5的1N/2N模式
  • redis搭建最小的集群,3主3从
  • wap网站是什么意思/个人推广网站
  • 自己设计一个网站首页/google浏览器网页版
  • wordpress更新配置文件/搜索优化seo
  • 代理推广怎么做/搜索引擎排名优化seo课后题
  • 政府办公室网站建设/发布平台
  • 帮别人做网站的公司/宁波seo优化费用