web页面接入Apple/谷歌/脸书三方登录

文章目录

  • web页面接入Apple/谷歌/脸书三方登录
  • 前言
  • 一、apple登录
    • 使用步骤
      • 1.入口文件index.html引入js文件
      • 2.vue页面初始化支付按钮,并且点击按钮登录
  • 二、google登录
    • 使用步骤
      • 1.入口文件index.html引入js文件
      • 2.vue页面初始化支付按钮,并且点击按钮登录
  • 三、facebook登录
    • 使用步骤
      • 1.入口文件index.html引入js文件
      • 2.vue页面初始化支付按钮,并且点击按钮登录
  • 页面效果
  • 注意事项
    • 1. 如果遇到登录结果无法监听的情况,需要根据报错配置页面的响应头(找运维老师).
    • 2.google按钮的大小需要用css修改下,让谷歌登录的按钮和设计图的大小一样.点击设计图的按钮时,能正常触发登录.不知道为什么我在js中根据谷歌提供的参数无法修改按钮的样式,所以用了这种方式.


前言

web页面除了账号登录外,一般还会接入三方登录,例如apple登录,google登录,facebook登录.接入方式如下.


一、apple登录

apple登录,就是使用苹果账号登录,ios系统中都是使用apple账号密码登录自己的手机用户中心

使用步骤

1.入口文件index.html引入js文件

代码如下(示例):

<script type="text/javascript" src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js"></script>

2.vue页面初始化支付按钮,并且点击按钮登录

<div id="appleid-signin" data-color="black" data-border="true" data-type="sign in" @click="iosLogin()"></div>
import {overseaIosLogin,
} from "../api/api";
export default {data() {return {IOSLoginData: {},}},created() {// 监听apple登录的结果const that = this;document.addEventListener('AppleIDSignInOnSuccess', (event) => {// alert("ios登录成功");that.IOSLoginData = event.detail.authorization;that.overseaIosLoginFun(event.detail.authorization);});document.addEventListener('AppleIDSignInOnFailure', (event) => {// Toast.fail("Apple Sign In Error");});},mounted() {// 初始化apple登录this.initAppleLogin();},methods: {// 初始化 Apple ID 认证initAppleLogin () {if (AppleID?.auth) {const nonce = Math.random().toString(36).substr(2, 10);AppleID.auth.init({clientId: 'xxx', // 后台生成的redirectURI: 'https://xxx', // 回调地址,必须要后台添加scope: 'name email',state: `${Math.round(Math.random() * 100000000)}`,nonce: nonce,usePopup: true, // 使用当前页面弹出小窗的模式});}},iosLogin() {try {AppleID.auth.signIn();} catch ( error ) {console.error('Apple Sign In Error: ', error);}},// 调用登录接口-IOSoverseaIosLoginFun(val) {const json = {id_token: val.id_token,};overseaIosLogin(json).then(res => {if(res.Code != 0) {return;}localStorage.setItem("token", res.data.account.token);Toast.success(this.$t('message.loginToast1'));});},}
}

二、google登录

使用你的谷歌账号登录

使用步骤

1.入口文件index.html引入js文件

代码如下(示例):

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

2.vue页面初始化支付按钮,并且点击按钮登录

<div id="my-google-id"></div>
import {overseaGoogleLogin,
} from "../api/api";
export default {data() {return {}},created() {},mounted() {setTimeout(() => {this.renderButton();}, 3000);},methods: {// 初始化谷歌按钮,建议每次打开页面都再次初始化renderButton() {const that = this;const nonce = Math.random().toString(36).substr(2, 10);google.accounts.id.initialize({client_id: 'xxx',ux_mode: 'popup', // redirect,popupcallback: (response) => {that.overseaGoogleLoginFun(response);},auto_prompt: false, // 自动登录nonce: nonce,})const parent = document.getElementById('my-google-id');google.accounts.id.renderButton(parent, {type: "icon",width: 130,});},// 调用登录接口- 谷歌overseaGoogleLoginFun(val) {const json = {third_user_token: val.credential,};overseaGoogleLogin(json).then(res => {if(res.Code != 0) {return;}localStorage.setItem("token", res.data.account.token);Toast.success(this.$t('message.loginToast1'));});},}
}

三、facebook登录

使用你的facebook账号登录

使用步骤

1.入口文件index.html引入js文件

代码如下(示例):

<script crossorigin="anonymous" src="https://connect.facebook.net/zh_CN/sdk.js#xfbml=1&version=v3.3&appId=xxxxx&autoLogAppEvents=1" async defer></script>

2.vue页面初始化支付按钮,并且点击按钮登录

<fb-signin-button
id="my-facebook-id"
:params="fbSignInParams"
@success="onSignInSuccess"
@error="onSignInError">
Sign in with Facebook
</fb-signin-button>
import {overseaFacebookLogin,
} from "../api/api";
export default {data() {return {fbSignInParams: {scope: 'email, public_profile',return_scopes: true},}},created() {},mounted() {},methods: {onSignInSuccess(response) {this.overseaFacebookLoginFun(response);},onSignInError (error) {// alert("faceBook error")},// 调用登录接口-facebookoverseaFacebookLoginFun(val) {const json = {auth_api_ver: 1,code: val.authResponse.accessToken}overseaFacebookLogin(json).then(res => {if(res.Code != 0) {return;}localStorage.setItem("token", res.data.account.token);Toast.success(this.$t('message.loginToast1'));});},}
}

页面效果

在这里插入图片描述

注意事项

1. 如果遇到登录结果无法监听的情况,需要根据报错配置页面的响应头(找运维老师).

我配置的响应头有:

响应头如下(示例):
cross-origin-opener-policy: *

2.google按钮的大小需要用css修改下,让谷歌登录的按钮和设计图的大小一样.点击设计图的按钮时,能正常触发登录.不知道为什么我在js中根据谷歌提供的参数无法修改按钮的样式,所以用了这种方式.

#my-google-id {width: 100%;height: 100%;position: absolute;top: 0;left: 0;right: 0;bottom: 0;z-index: 1;opacity: 0;>div {>div {>div {width: 130px !important;height: 130px !important;}}}iframe {margin: 0 !important;position: relative !important;transform: scaleX(2) scaleY(2.9); // 这是主要的代码top: 43px !important;left: 32px !important;z-index: 2;cursor: pointer;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918028.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918028.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918028.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

管家婆分销软件中怎么删除过账单据?

在业务单据录入中&#xff0c;会出现单据保存过账后才发现数量或商品信息录入错误的情况&#xff0c;不想红冲单据&#xff0c;该怎么处理&#xff1f;今天来和小编一起学习下管家婆分销软件中怎么删除过账单据吧&#xff01;1&#xff0c;软件需要升级到9.92及以上版本&#x…

美颜SDK底层原理解析:直播场景下的美白滤镜实时处理方案

众所周知&#xff0c;美颜功能中&#xff0c;美白滤镜是使用频率最高的功能之一。它不仅能让肤色更通透、提亮整体画面&#xff0c;还能让观众感受到主播的“在线状态”与精神气。但你有没有想过&#xff0c;这个看似简单的“美白”背后&#xff0c;其实是一整套实时图像处理的…

系统构成与 Shell 核心:从零认识操作系统的心脏与外壳

系统构成与 Shell 核心&#xff1a;从零认识操作系统的心脏与外壳 很多人用电脑、用手机&#xff0c;但很少去想&#xff1a; 操作系统到底是怎么构成的&#xff1f; 为什么我们敲一个命令&#xff0c;系统就能乖乖执行&#xff1f; 这背后的关键&#xff0c;就在于系统的构成和…

wordpress的wp-config.php文件的详解

wp-config.php 是 WordPress 网站的核心配置文件&#xff0c;它存储了网站运行所需的基本配置信息&#xff0c;如数据库连接信息、安全密钥、调试模式等。以下是关于 wp-config.php 文件的详细解析&#xff1a; 1. 数据库连接信息 这是 wp-config.php 文件中最关键的部分&…

GPT-5 将在周五凌晨1点正式发布,王炸模型将免费使用??

就在今晚凌晨1点&#xff0c;OpenAI 又要搞大新闻了。 是的&#xff0c;就是大家期待已久的 GPT-5 发布会。 虽然官方还没明说&#xff0c;但各种“预热”已经安排得明明白白&#xff0c;Sam Altman 这波营销属实拉满了&#xff0c;发布会都还没开始&#xff0c;相关的代码和页…

MySQL UNION 操作符详细说明

目录 MySQL UNION 操作符详细说明 1. UNION 操作符简介 2. 基本语法 3. 使用规则和限制 4. UNION vs UNION ALL 5. 示例演示 6. 注意事项 MySQL UNION 操作符详细说明 MySQL 中的 UNION 操作符用于合并两个或多个 SELECT 语句的结果集&#xff0c;生成一个单一的结果集。…

Dify 从入门到精通(第 20/100 篇):Dify 的自动化测试与 CI/CD

Dify 从入门到精通&#xff08;第 20/100 篇&#xff09;&#xff1a;Dify 的自动化测试与 CI/CD Dify 入门到精通系列文章目录 第一篇《Dify 究竟是什么&#xff1f;真能开启低代码 AI 应用开发的未来&#xff1f;》介绍了 Dify 的定位与优势第二篇《Dify 的核心组件&#x…

VSCode ssh一直在Setting up SSH Host xxx: Copying VS Code Server to host with scp等待

原因 大概率是远程服务器的下载有问题 原因1 远程服务器的网络不好 原因2 远程服务器的磁盘满了 我遇到的就是第二种&#xff0c;解决方法也很简单 VSCode ——> Help ——> About 会出现一些信息&#xff0c;例如下面的 Version: 1.97.2 (user setup) Commit: e54c774e0…

Spring Cloud 项目注册 Nacos 时设置真实 IP 的多种方式【多网卡/虚拟机实用指南】

&#x1f680; Spring Cloud 项目注册 Nacos 时设置真实 IP 的多种方式【多网卡/虚拟机实用指南】 前言 在使用 Spring Cloud Alibaba Nacos 注册服务时&#xff0c;常常会遇到 注册 IP 异常 的问题&#xff1a; 本机有多个网卡&#xff08;如 Docker、VM 虚拟机、VPN&#xf…

单片机裸机程序设计架构

文章目录一、前后台系统&#xff08;Foreground-Background System&#xff09;二、时间片轮询架构&#xff08;Time-Slicing Polling&#xff09;三、状态机架构&#xff08;State Machine&#xff09;四、事件驱动架构&#xff08;Event-Driven&#xff09;五、架构设计原则总…

odoo-061 PostgreSQL 中处理 NULL 值的 SQL 条件写法

文章目录1. 检查是否为 NULL2. NULL 值与比较运算符3. 在聚合函数中处理 NULL4. 在 WHERE 子句中的复杂条件注意事项在 PostgreSQL 中处理 NULL 值需要特别注意&#xff0c;因为 NULL 表示"未知"或"不存在"的值&#xff0c;与普通值的行为不同。以下是几种…

Flink CDC 介绍

一、什么是 CDCCDC 是 Change Data Capture(变更数据获取)的简称。核心思想是&#xff0c;监测并捕获数据库的变动&#xff08;包括数据或数据表的插入、更新以及删除等&#xff09;&#xff0c;将这些变更按发生的顺序完整记录下来&#xff0c;写入到消息中间件中以供其他服务…

暑期第三周(7.28-8.3)

其实 web [SWPUCTF 2021 新生赛]easy_sql 开启环境后看到一个提示“球球你输入点东西吧&#xff01;”没有其他信息&#xff0c;就看看源码 直接试试get传参 有所显示 看看是字符型还是数字型 可以判定是字符型 接下来判断闭合类型 根据显示&#xff0c;可以得知是单引…

【物联网】基于树莓派的物联网开发【21】——MQTT获取树莓派传感器数据广播实战

场景介绍 今天程序猫带领大家如何获取树莓派传感器温湿度数据&#xff0c;并用MQTT进行广播。 实现过程 启动MQTT服务 1、终端启动Mosquitto服务 sudo systemctl start mosquitto 2、设置服务开机自动启动 sudo systemctl enable mosquitto硬件连接 树莓派4b连接GPIO引脚与DHT1…

Mysql自定义顺序查询

1、使用函数MySQL 的 ORDER BY FIELD() 函数可以按照指定的自定义顺序对查询结果进行排序&#xff0c;而不是默认的升序&#xff08;ASC&#xff09;或降序&#xff08;DESC&#xff09;。2、适用场景后端/运营人员经常需要临时把某几条记录‘拽’到最前&#xff08;或最后&…

回归预测 | MATLAB实现RBF径向基神经网络多输入单输出回归预测+SHAP可解释分析

目录 基于RBF径向基神经网络多输入单输出回归预测及SHAP可解释分析的研究 摘要 1. 引言 1.1 研究背景 1.2 研究意义 1.3 研究目标与内容 2. 文献综述 2.1 RBF径向基神经网络研究现状 2.2 SHAP可解释分析研究进展 3. RBF径向基神经网络原理 4. SHAP可解释分析理论基础 4.1 Shapl…

--- Eureka 服务注册发现 ---

Euraka 是netfix开发的基于REST服务基于AP框架的注册中心&#xff0c;主要是用于服务的注册&#xff0c;管理&#xff0c;负载均衡&#xff0c;服务故障转移 Eureka主要分俩部分Eureka Server&#xff1a;服务中心Server端&#xff0c;提供服务注册 发现 健康检查等服务Eureka …

vue3 el-select 加载内容后 触发事件

在 Vue 3 中使用 Element UI 的 el-select 组件实现加载内容后触发事件&#xff0c;主要有以下两种常见需求及实现方式&#xff1a;加载数据后触发事件若需在数据加载完成后触发特定事件&#xff08;如页面渲染完成&#xff09;&#xff0c;可通过自定义指令监听滚动容器状态&a…

c# winform 调用 海康威视工业相机(又全又细又简洁)

1.准备一个海康相机 从垃圾桶里翻出来一个USB口相机。 2.下载MVS 和SDK 海康机器人-机器视觉-下载中心 mvs&#xff1a; sdk&#xff1a; 用MVS 调试一下&#xff0c;能连接就行。 海康威视相机&#xff0c;MVS连接成功&#xff0c;但无图像怎么办&#xff1f;-CSDN博客 3.打…

前端页面直接生成PDF下载文件

前言 因为要实现业务需求如下图&#xff0c;业务逻辑&#xff0c;该凭证为前端代码实现&#xff0c;为了简单方便实现下载为pdf的需求。 一、怎么在前端直接生成PDF&#xff1f; 需求描述&#xff1a;浏览器打开的这个页面&#xff0c;点击下载&#xff0c;把当前弹框页面的…