vue2+springboot集成Google登录

本文详细描述了如何在Vue应用中集成Google账号登录功能,包括创建GoogleCloud凭据、前端代码实现、回调获取用户信息,以及遇到的问题如回调函数类型错误的解决方案。
摘要由CSDN通过智能技术生成

最近需要在部署的接口平台上支持Google账号登录功能,过程中遇到了不少问题,在此记录一下

官方文档:https://developers.google.com/identity/gsi/web/guides/client-library?hl=zh-cn

1.创建凭据

首先需要到Google Cloud创建凭据,具体创建过程就不再赘述了,这个是比较简单的,注意本地调试时需要同时添加 http://localhost 和 http://localhost:<port_number>

2.代码实现

2.1.代码集成

vue中使用下面的方法加载客户端库并集成登录按钮

<div class="g-signin-button">
    <component :is="'script'" src="https://accounts.google.com/gsi/client" ansyc/>
    <div id="g_id_onload"
        data-client_id="YOUR CLIENT_ID"
        data-context="signin"
        data-ux_mode="popup"
        data-callback="googleSignCallBack"
        data-auto_prompt="false">
    </div>
    <div class="g_id_signin"
        data-type="standard"
        data-shape="pill"
        data-theme="outline"
        data-text="signin_with"
        data-size="large"
        data-logo_alignment="left">
    </div>

刷新页面即可看到出现登录按钮

2.2.获取用户信息

在回调方法中获取登录用的凭证,并发送给后台

googleSignCallBack (googleUser) {
   let credential = googleUser.credential;
   this.result = this.$post("/googleLogin", credential, response => {
      });
    },

后台使用Google API 客户端库验证凭据,需添加Maven依赖

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
     <version>1.32.1</version>
</dependency>
<dependency>
     <groupId>com.google.oauth-client</groupId>
     <artifactId>google-oauth-client-jetty</artifactId>
     <version>1.32.1</version>
</dependency>

验证凭证获取用户信息

@PostMapping(value = "/googleLogin")
    public ResultHolder googleLogin(@RequestBody String token){
        ResultHolder result = null;
        try {
            GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(), new GsonFactory())
                    .setAudience(Collections.singletonList(googleClientId))
                    .build();
            GoogleIdToken idToken = verifier.verify(token);
            if (idToken != null){
                GoogleIdToken.Payload payload = idToken.getPayload();
                String email = payload.getEmail();
                String name = (String) payload.get("name");
                //处理流程
            }
        }catch (Exception ex){
            ex.printStackTrace();
        }
        return result;
    }

3.问题记录

3.1.报错[GSI_LOGGER]: The value of 'callback' is not a function

Google的 data-callback 属性需要一个全局函数作为回调函数,而不能直接绑定到 Vue 组件的方法上,需要在 mounted 函数中,将 Vue 组件的方法 googleSignCallBack赋值给一个全局变量或全局对象的属性,使它在全局范围内可访问

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue2、Spring Boot和MySQL是一种常见的全栈开发技术组合。 Vue2是一个流行的JavaScript框架,用于构建用户界面。它具有简单易学、高效灵活的特点,可以帮助开发者快速构建现代化的网页应用程序。Vue2可以与其他后端框架很好地集成,比如Spring Boot。 Spring Boot是一个基于Java的开发框架,用于构建企业级、可扩展的后端应用程序。它提供了很多功能模块和工具,可以简化开发过程,提高开发效率。Spring Boot可以与前端框架(如Vue2)结合使用,实现前后端分离的开发模式。 MySQL是一个广泛使用的关系型数据库管理系统。它是一种开源的、可靠的、高性能的数据库,适用于各种规模的应用程序。MySQL可以与Spring Boot集成,用于存储和管理应用程序的数据。 结合Vue2、Spring Boot和MySQL,我们可以实现一个完整的Web应用程序。前端使用Vue2构建用户界面,后端使用Spring Boot处理业务逻辑和数据访问,数据库使用MySQL存储和管理数据。Vue2通过Ajax等方式与后端通信,获取数据并更新界面;Spring Boot处理前端请求,与MySQL进行数据交互。 这个技术组合有很多优势。Vue2提供了优雅简洁的用户界面,可以实现良好的用户体验;Spring Boot提供了丰富的功能和工具,可以简化后端开发;MySQL是一种可靠高效的数据库,可以存储和管理应用程序的数据。同时,Vue2、Spring Boot和MySQL都有活跃的开发社区和丰富的学习资源,方便开发者学习和解决问题。 总而言之,Vue2、Spring Boot和MySQL是一种强大的全栈开发技术组合,可以帮助开发者构建高效、可扩展的Web应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值