首页 > 基础资料 博客日记

java集成google登录(gmail)

2024-10-28 14:00:07基础资料围观84

Java资料网推荐java集成google登录(gmail)这篇文章给大家,欢迎收藏Java资料网享受知识的乐趣

1.google开发者账号配置

1.1创建一个项目

1.2:创建凭证
进入凭据页面,左上角选择自己的项目

创建客户端ID

1.3: google回调方式有两种 (客户端配置不同)

        本次使用第二种前端的方式data-callback接受google回调,拿着google令牌去后台服务器进行验证登录(推荐第二种简便)

        1.4: 第一种是data-login_ur表示授权后通知放回给后台服务器(服务器回调接口路径)

             第一种是java服务器接受回调需要跟前端有通信相比第二种会比较麻烦需要的话看下面这个链接

https://blog.csdn.net/m0_72293405/article/details/142098755?spm=1001.2014.3001.5501

        1.5:第二种是data-callback表示授权后回调给前端方法(前端全局挂在的方法)
            1.5.1:本地调式直接填localhist,线上需要填域名,类型选择web类型。创建完会有一个客户端ID后端要使用到

2.前端代码 (vue)

        2.1需要导入google 的 js库,注意vue的钩子函数生命周期,created()里动态导入即可
https://accounts.google.com/gsi/client
//加载googel一键登录js库
const oScript = document.createElement('script');
oScript.src = this.redirectUri;
document.body.appendChild(oScript);
        2.2html代码,data-client_id填入1.2创建的客户端ID
<div class="g-signin-button">
            <div id="g_id_onload"
                 data-client_id="clientId"
                 data-context="signin_with"
                 data-ux_mode="popup"
                 data-callback="googleSignCallBack"
                 data-close_on_tap_outside="false"
                 data-itp_support="false">
            </div>

            <div class="g_id_signin"
                 data-type="standard"
                 data-shape="pill"
                 data-theme="outline"
                 data-text="signin_with"
                 data-size="medium"
                 data-logo_alignment="center"
                 data-locale="en-US"
                 data-width="340">
            </div>
          </div>
         2.3将data-callback="googleSignCallBack"属性的googleSignCallBack方法注册为全局函数不然google回调找不到
window.googleSignCallBack = this.googleSignCallBack; // 关键:将方法注册为全局函数
        credential:授权完成后的类似于token后台用于解析获取google账户信息 
 //在回调方法中获取登录用的凭证,并发送给后台进行登录
    googleSignCallBack (googleUser) {
      let credential = googleUser.credential;
      //发送后台接口验证完整性 && 登录
    },

3.服务后台验证接口 

        3.1:验证方式1 需要外网服务器
 GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(), new GsonFactory())
.setAudience(Collections.singletonList(CLIENT_ID))
.build();
//验证登录回调的credential完整性
GoogleIdToken idToken = verifier.verify(jsonObject.getString("credential"));
if (idToken != null) {

GoogleIdToken.Payload payload = idToken.getPayload();
String email = payload.getEmail();

//写自己的登录业务

}
        3.2:验证方式2本地开启vpn可以测试
GoogleIdToken idToken = GoogleIdToken.parse(GsonFactory.getDefaultInstance(), 
google.getCredential());
GoogleIdToken.Payload payload = idToken.getPayload();
google.setSub(payload.getSubject());
google.setAud(payload.getAudience().toString());
google.setUserName(payload.getEmail());
google.setNickName((String) payload.get("name"));
//登录业务

4.POM依赖


<!--  版本  -->
<google-api.version>1.32.1</google-api.version> 


<!--  google一键登录  -->
        <dependency>
            <groupId>com.google.api-client</groupId>
            <artifactId>google-api-client</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client-jetty</artifactId>
        </dependency>


文章来源:https://blog.csdn.net/m0_72293405/article/details/142093186
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云