Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 代码发布 › 「代码分享」探索与挑战 | 简单搞定 Web 版谷歌登录

「代码分享」探索与挑战 | 简单搞定 Web 版谷歌登录

Eswlnk的头像
Eswlnk
2023-12-05 22:12:16
「代码分享」探索与挑战 | 简单搞定 Web 版谷歌登录-Eswlnk Blog
智能摘要 AI
作者描述了Web版谷歌登录对接过程中遇到的问题与解决方案。官方文档简略,未提供充分的自定义选项,UI不可控,无法在本地调试。通过`google.accounts.id.renderButton`实现了登录按钮的渲染。尽管如此,仍存在一些局限:客户端ID需对应真实域名;`prompt()`方法仅可触发一次;`renderButton`生成的按钮样式不可控,宽度受限(最大400)。总体上,此方案可用,但仍有改进空间。

前言

近期,我投身于 Web 版谷歌登录的对接工作。然而,这个过程充满了坑,令我深感应急处理方案的不完美。让我们一探其中的曲折经历,看看这个教程的种种局限:

  • 缺乏详尽文档,官方提供的教程自由度极低。
  • UI 不受控,前端无法自定义触发按钮。

不再啰嗦,让我们开启这段奇妙的旅程!

探索之路

官方文档与流程

首先,我们需要向谷歌申请一个客户端 ID,以便处理 Web 登录。

「代码分享」探索与挑战 | 简单搞定 Web 版谷歌登录-Eswlnk Blog
  1. 打开开发者后台,选择 OAuth 客户端 ID,应用类型选择 Web 应用,并填写名称。
  2. 在已获授权的 JavaScript 来源中添加你允许使用该客户端 ID 的网站域名。已获授权的重定向 URI 是用户完成登录后返回的地方。

「代码分享」探索与挑战 | 简单搞定 Web 版谷歌登录-Eswlnk Blog

填写完毕后,点击创建,你现在就可以获取到客户端 ID 了。

「代码分享」探索与挑战 | 简单搞定 Web 版谷歌登录-Eswlnk Blog

引入谷歌脚本

为了简便,我们去掉了官方脚本中的 async 属性,以确保在调用 SDK 时它是有值的。

<script src="https://accounts.google.com/gsi/client" async></script>

然后,通过 JavaScript 初始化谷歌登录:

// 初始化
google.accounts.id.initialize({
    client_id: "xxx",
    callback: (loginData) => {
        // 此时loginData里面包含了用户的一些信息,可以发送给后端交换我们自己的用户信息数据
    }
});
// 渲染登录按钮
const container = document.documentById("#xxx");
google.accounts.id.renderButton(container, {
  theme: "outline",
  type: "standard",
  size: "large",
  width: container.offsetWidth,
  locale: "en_US",
  text: "signup_with",
  logo_alignment: "center"
});

我使用了初始化和渲染登录按钮两个方法。官方还提供了 google.accounts.id.prompt() 方法,它会在首次弹出一个弹窗,但个人测试表明它只触发一次。因此,最终我选择了渲染登录按钮的方式。

详细的 JS API 可以在这里查看。

探索中的痛苦

  • 客户端 ID 只能对应真实域名,导致在测试开发阶段需要不断上传到测试服务器测试,本地无法调试。
  • prompt() 方法不能重复调用,且只有一次机会,目前没找到重置的方式。
  • 使用 renderButton 方法创建的登录按钮,样式无法自定义。

由于官方在开发模式下创建一个 div 插入到容器元素中,让你以为可以通过 CSS 控制,但上到测试环境后,你会发现它变成了 div 和 iframe 组合的形式。

最令人困扰的是,宽度最大只能是 400,高度却无法控制。在大设备上,按钮显得特别小,与当前的 REM 适配方式完全不同。

后端处理

后端只需参照后端对接文档即可。

总结

总的来说,这个方案勉强可用,但应该还有更好的方法。等以后有机会再深入研究吧。

本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
JavaScriptweb谷歌
1
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「代码分享」探索WebSocket的乐趣 | 打造个性化的封装体验
上一篇
摆脱Vite + Vue 3白屏困扰的终极指南 | 深入探索,轻松应对
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「亲测有效」Google Gemini 学生优惠:解决身份验证和支付卡验证
  • 来自谷歌27岁的生日涂鸦
  • 「日志记录」逆向必应翻译网页版API实现免费调用
  • 「代码分享」第三方平台VIP视频解析API接口
  • 「至臻原创」某系统网站登录功能监测
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

「主题通用」全站文章评论增加验证码
2023-07-15 3:33:08
工程实践:模块化程序设计(1)
2021-06-06 17:27:04
每日知道:中国手机怎么注册google账号?
2023-02-27 22:58:24

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.877 秒   |  SQL查询 40 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈