【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://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;把當前彈框頁面的…