当前位置: 首页 > news >正文

【web页面接入Apple/google/facebook三方登录】

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://nfwi .wsgyq.cn
http://euphotic .wsgyq.cn
http://scenic .wsgyq.cn
http://kafiri .wsgyq.cn
http://chin .wsgyq.cn
http://damfool .wsgyq.cn
http://launch .wsgyq.cn
http://menorca .wsgyq.cn
http://decemvirate .wsgyq.cn
http://fluidics .wsgyq.cn
http://cysticercus .wsgyq.cn
http://bosun .wsgyq.cn
http://headlock .wsgyq.cn
http://debutant .wsgyq.cn
http://autosomal .wsgyq.cn
http://purine .wsgyq.cn
http://subdivision .wsgyq.cn
http://osteology .wsgyq.cn
http://reforge .wsgyq.cn
http://palate .wsgyq.cn
http://boar .wsgyq.cn
http://houston .wsgyq.cn
http://spirivalve .wsgyq.cn
http://doyen .wsgyq.cn
http://droning .wsgyq.cn
http://polyarchy .wsgyq.cn
http://hyperalimentation .wsgyq.cn
http://pulpiteer .wsgyq.cn
http://kylix .wsgyq.cn
http://breathtaking .wsgyq.cn
http://www.dtcms.com/a/293713.html

相关文章:

  • 精准扫描,驱动未来:迁移科技3D视觉系统在工业自动化中的革命性应用
  • MySQL 链接方法思考
  • 【前端】ikun-pptx编辑器前瞻问题三: pptx的图片如何提取,并在前端渲染。
  • 【LeetCode 热题 100】78. 子集——(解法三)位运算
  • (46)elasticsearch-华为云CCE无状态负载部署
  • Vite 6 到 Vite 7 的迁移指南,常见问题和解决方案
  • Linux驱动-中断-工作队列传参
  • mysql中varchar可以放多少个中文字符?
  • shiro的SecurityUtils.getSubject() 使用说明
  • 【按下电源键后,电脑里发生了什么?——BIOS:启动世界的“第一把钥匙”】
  • AI产品经理面试宝典第49天:智能客服、教育产品与医疗应用设计题相关解析
  • 深入解析Sqoop数据导入的并行切分机制与主键分区算法
  • AM1.5G AAA稳态太阳光模拟器特点
  • 西安电子科技大学金融学431考研经历分享
  • VSCode 开发 STM32 - clangd 带来的极致补全体验
  • FastAdmin 中生成插件
  • Python笔记之跨文件实例化、跨文件调用、导入库
  • 算法竞赛备赛——【图论】拓扑排序
  • PAT 甲级题目讲解:1002《A+B for Polynomials》
  • 二分查找----2.搜索二维矩阵
  • (13)机器学习小白入门YOLOv:YOLOv8-cls中用TensorBoard实时监控指标
  • 深入浅出理解 Reactor:响应式编程的利器​
  • Github上传文件流程图
  • Docker 应用数据备份、迁移方案
  • Redis原理之分布式锁
  • 武德物业和浑元科技-《软件方法》第2章业务建模之愿景03
  • Oracle物化视图详解
  • 计算机网络第四章(4)——网络层《无分类编址CIDR、路由聚合》
  • ESP32-CAM实战:DIY基于OpenAI的AI视觉识别相机
  • 校园后勤服务平台小程序的设计与实现