网站侧接入google一键登录

本文介绍了如何在网站上集成Google一键登录功能,使用GoogleDevelopers指南提供的HTML代码,并详细说明了前端回调处理和后端Google身份验证的过程,包括OAuth配置步骤。
摘要由CSDN通过智能技术生成

前言:近期发现不少网站的google一键登录功能,交互UI简单明快,特地尝试一下。发现是一步验证。不是之前的两步验证(access_token+token的形式)

image.png

使用Google登录按钮

界面UI

google developers指南生成HTML代码,在启用了Google登录的产品登录界面替换现有谷歌登录按钮,代码如下:

<div id="g_id_onload"
    data-client_id="xxxxx.apps.googleusercontent.com" #google API凭据客户端ID
    data-context="signin"
    data-callback="handleCredentialResponse" #谷歌登录javascript回调>
</div>

<div class="g_id_signin"
    data-type="standard"
    data-shape="rectangular"
    data-theme="outline"
    data-text="signin_with"
    data-size="large"
    data-logo_alignment="left">
</div>
// google一键登录依赖的库文件大小:74.4KB
<script src="https://accounts.google.com/gsi/client" async defer></script>

参数补充说明:

  1. data-context:更改一键登录上下文,可以更改context属性以创建不同的措辞集
signin“使用Google登录”
signup“注册Google”
use“与Google一起使用”

各属性含义

属性含义效果
data-client_id应用的客户端 ID,同配置的谷歌登录client_id-
data-auto_prompt展示登录按钮时,是否展示一键式登录提示框,谷歌官方的建议是不要同时使用。-
data-context用于更改一键提示中显示的标题和消息的文本
data-callback处理返回的 ID 令牌的 JavaScript 函数,已实现,可全局调用-
data-type按钮类型:图标或标准按钮。
data-shape按钮的形状。例如,矩形或圆形。
data-theme按钮主题。例如,filled_blue 或 filled_black。
data-text按钮文字。例如,“使用 Google 帐号登录”或“使用 Google 注册”。
data-size按钮大小。例如,“小”或“大”。
data-logo_alignmentGoogle 徽标对齐方式:左对齐或居中。
data-width按钮宽度(以像素为单位)。
data-locale按钮文字以此属性中设置的语言呈现。

具体参考谷歌官网文档,解释得比较全面:https://developers.google.com/identity/gsi/web/reference/html-reference#element_with_class_g_id_signin

前端谷歌回调

*谷歌提供了页面重定向和js函数回调的方式响应登录,由于需要拼接GA分析参数,故而需要采用前端js回调。
*

// 新版谷歌登录callback函数 拼接GA分析参数
    function handleCredentialResponse(res) {
        
        $.ajax({
                type: "POST",
                url: "/user/login/new-google-callback",
                async: true,
                data: {
                    "JWT": res,
                },
                success(res) {
                    location.href = res.url;
                },
                erroe() {
                    location.href = '/user/login';
                }
            });
    };

后端处理

#基于php语言的代码示例
use Google_Client;

$CLIENT_ID = "你自己的google的客户端id";
$client = new Google_Client(['client_id' => $CLIENT_ID]);
$postData = $request->post();
$google_token = $postData['JWT'];
$google_userinfo = $client->verifyIdToken($google_token['credential']);

if ($google_userinfo) {
  $userid = $google_userinfo['sub'];
  $id = $google_userinfo['sub'];
  $google_sub_id = $google_userinfo['sub'];
  $full_name = !empty($google_userinfo['name']) ? $google_userinfo['name'] : '';
  $email = !empty($google_userinfo['email']) ? $google_userinfo['email'] : '';
  $avatar = !empty($google_userinfo['picture']) ? $google_userinfo['picture'] : '';
  // If request specified a G Suite domain:
  //$domain = $google_userinfo['hd'];
} else {
  // Invalid ID token
}

处理效果

image.png

在google开发者平台上,申请注册客户端

- 进入谷歌API服务官网.

- 新建项目

- 配置OAuth统一屏幕

  • 完整填写下述表单后,保存继续

123123.jpg

  • 后续表单均可跳过。
  • 配置项目凭据

image.png

image.png

  • 已获授权的JavaScript来源填写好产品跟域名(建议加上测试环境域名,方便后续测试使用)
  • 重定向URL,统一为:https://your_domain/user/login/google-callback
  • 保存,完成。

保存完成后,会出现客户端id,即代码中需要使用到的:

image.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在前端接入 Google 登录,你可以按照以下步骤进行操作: 1. 创建 Google API 项目并启用 Google 登录 API: - 前往 Google Cloud Console(https://console.cloud.google.com)并登录。 - 创建一个新项目或选择现有项目。 - 在“API 和服务”菜单中,选择“库”,然后搜索并启用“Google 登录 API”。 2. 配置 OAuth 后端凭据: - 在“API 和服务”菜单中,选择“凭据”。 - 点击“创建凭据”按钮,选择“OAuth 客户端 ID”。 - 在应用类型中选择“Web 应用程序”。 - 输入你的网站或应用的名称。 - 在“授权回调 URL”中输入你的应用的回调 URL。这是用户登录后重定向的 URL。 - 点击“创建”按钮并记录生成的客户端 ID 和客户端密钥。 3. 在前端应用中集成 Google 登录: - 在你的前端应用中,引入 Google 登录 API 的 JavaScript 库。你可以使用以下代码将其添加到 HTML 文件中: ```html <script src="https://accounts.google.com/gsi/client" async defer></script> ``` - 在用户点击登录按钮时,调用 `google.accounts.id.initialize` 方法来初始化 Google 登录: ```javascript google.accounts.id.initialize({ client_id: 'YOUR_CLIENT_ID', callback: handleGoogleResponse }); ``` 请将 `YOUR_CLIENT_ID` 替换为你在步骤 2 中获得的客户端 ID。 - 实现 `handleGoogleResponse` 函数来处理 Google 登录的响应。在这个函数中,你可以获取到用户的授权凭证,并将其发送到后端进行验证和处理。 4. 在后端验证和处理授权凭证: - 在你的后端应用中,接收从前端发送的授权凭证。 - 使用 Google 提供的 API 客户端库或手动验证授权凭证的有效性,并获取用户的唯一标识符以及其他所需信息。 - 根据你的业务需求,将用户标识符与你的用户系统进行关联,创建新用户或登录现有用户。 这样,你就可以在前端接入 Google 登录了。请注意,以上只是一个简单示例,你可能需要根据你的具体需求进行相应的调整和扩展。详细的文档和示例可以在 Google 开发者文档中找到,以帮助你更好地集成 Google 登录功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值