google账号登录第三方平台实现
一、准备工作
1、开通google账号
进入开发者后台:https://console.cloud.google.com/welcome
2、进入凭据-API和服务中
3、增加API密钥
密钥主要使用于OAuth2.0 JDK方式
二、google登录的实现方式
1、前端实现google对接登录,使用Google网页版登录,“一键登录”
技术文档链接:https://developers.google.com/identity/gsi/web/guides/overview?hl=zh-cn
首先,加载客户端库
<script src="https://accounts.google.com/gsi/client" async defer></script>
在登录组件内增加相关的html代码,可以自己写,也可以使用生成集成代码https://developers.google.com/identity/gsi/web/tools/configurator?hl=zh-cn
//此处为vue实现代码<divid="g_id_onload"data-client_id="项目的appid"data-context="signin"data-auto_select="true"data-itp_support="true"data-auto_prompt="false"allow_parent_origin="http://localhost"><div class="g-sign-btn" @click="handleClick"><imgsrc="@/static/images/home/google.svg"alt=""class="amall-imgChild"/></div></div>mounted() {this.$$.getScript("https://accounts.google.com/gsi/client", () => {this.init(this.handleCredentialResponse);});
},
beforeDestroy() {window.removeEventListener("load", this.gload());
},
methods: {handleClick() { this.init(this.handleCredentialResponse);},init(fn) {window.addEventListener("load", this.gload(fn));},async gload(fn) {console.log(this);if (window.google && window.google.accounts) {window.google.accounts.id.initialize({// 主要就是填写client_idclient_id: "项目的AppId",callback: fn,});const dom = document.getElementById("g_id_onload");window.google.accounts.id.renderButton(dom, {type: "icon",shape: "square",theme: "outline",text: "signin_with",size: "medium"});} else {setTimeout(() => {this.$$.getScript("https://accounts.google.com/gsi/client", () => {this.gload();});}, 500);}},decodeJwtResponse(token) { //加密const strings = token.split(".");return JSON.parse(decodeURIComponent(escape(window.atob(strings[1].replace(/-/g, "+").replace(/_/g, "/")))));},async handleCredentialResponse(response) {if (response) {console.log(response, "回调");const responsePayload = this.decodeJwtResponse(response.credential);console.log("responsePayload", responsePayload);console.log("ID: " + responsePayload.sub);console.log("Full Name: " + responsePayload.name);console.log("Given Name: " + responsePayload.given_name);console.log("Family Name: " + responsePayload.family_name);console.log("Image URL: " + responsePayload.picture);console.log("Email: " + responsePayload.email);}return true;},},
2、使用OAuth2.0实现
技术文档链接https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow?hl=zh-cn
3、通过后端实现
实现流程:
实现代码:
//模板
<div class="g-sign-btn absolute" @click="handleClick"><imgsrc="@/static/images/home/google.svg"alt=""class="amall-imgChild" />
</div>
//方法
handleClick() {this.$store.dispatch("user/openIframe", 'google');
}
//store登录方法
const actions = {openIframe({state, commit}, key) {//具体的登录接口,用于返回第三方登录的验证页面url$api(`oauth.${key}`).then((res) => {this.$bus.iframe && this.$bus.iframe.close();commit("SET_IFRAME", res);});},
}const mutations = {SET_IFRAME(state, iframeUrl){let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=800,height=500,left=10%,top=20%`;//打开小窗口this.$bus.iframe = open(iframeUrl, '_blank', params);window.addEventListener("message", (event) => {const res = event.data;//小窗口的登录信息,包含tokenif(res.code == '000000'){//拿到相应的登录token去登录,如果失败给出提示this.dispatch("user/getUserInfo", res.token).then(() => {this.$router.replace("/");});} else {this.$message.closeAll();this.$message.error(res.message || "login fail~");}});console.log(this.$bus.iframe, "iframe");}
};
相对前两种方式来说,前两种对于外网的要求很高,没有连接外网几乎拉不起来登录的弹框,使用后端访问,就算没有连接外网也可以拉起弹框,只是验证的页面打不开而已。
算是记录一下实现的方式和流程,有失误的地方,大家可以提意见~~。
相关文章:
- fiddler抓包工具安装,配置https、移动端抓包、弱网设置
- 网络抓包技术:libcap
- python猪代码_猪圈密码python脚本实现
- zip文件的读写
- linux一次压缩多个文件,同时解压多个zip文件
- hadoop直接解压hdfs中的zip文件
- 【附源码】计算机毕业设计SSM校园二手商品交易系统
- [附源码]java毕业设计校园闲置物品交易
- android毕业设计——基于Android+Tomcat+JavaEE的旧物交易平台设计与实现(毕业论文+程序源码)——旧物交易平台
- 【UEditor】百度UE富文本自定义按钮添加文本
- UE4 面试题整理
- 一不小心,登上支付宝开发者社区热文榜单Top3
- 支付宝可以给微信好友转账了?这项新功能体验没那么简单
- Sweet Dreams优美的英文手写字体
- 《程序员》 -- 说说软件专利
- 专利进阶(二):专利撰写常用技术及算法汇总(持续更新中)
- play框架,即学即用
- 为什么那么多人想学(H客)?
- 调戏木马病毒的正确姿势——下
- Oracle进阶篇之查看执行计划
- 《信息保障和安全》第五章
- Quartus Prime设计十五人投票表决器
- Verilog实现表决器
- FPGA基础测试题 verilog
- 逻辑电路分析的方法介绍与表决器举例
- BGP机房是什么?
- 啥是BGP机房啊,被科普一下!
- BGP机房的基本概念
- 什么是bgp服务器,有哪些优势?
- BGP机房的优点
google账号登录第三方平台实现相关推荐
- 使用QQ账号,新浪微博账号登录第三方应用
最近公司由于项目要求,在应用中集成了QQ和新浪微博登录的功能,以前并没有接触过这方面的东西,前2天研究清楚,并实现了,写点心得和大家分享,同时也作为学习记录保留下来. 废话不说,直入正题了. 一 ...
- [Android分享] 使用QQ账号,新浪微博账号登录第三方应用
转载--http://www.eoeandroid.com/thread-325071-1-1.html 最近公司由于项目要求,在应用中集成了QQ和新浪微博登录的功能,以前并没有接触过这方面的东西,前 ...
- chrome无法更新更新chrome后Google账号登录无反应
1.chrome无法更新 chrome浏览器发行版本随着时间不停更新,当到了一定时间后,chrome浏览器的右上角就会提示当前版本太旧.需要更新.有时这个"更新"图标还会提示&qu ...
- python爬虫之古诗文网中验证码的识别并登录----第三方平台
目标网站:古诗文网 目标网址:http://so.gushiwen.org/user/collect.aspx 任务要求: (1)通过selenium的方式模拟该网站的登录,并成功输入用户名和密码: ...
- 微信扫描二维码登录第三方平台
嗯...... 最近做了一个微信扫码登陆第三方平台功能,说下步骤就行,反正原理你们网上直接百度,我这里写了,估计也没几个人有耐心看 第一步 生成一个链接 https://open.weixin.qq. ...
- WebView Attack In Android : 解析第三方账号登录平台所存在的安全隐患
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17663345 前言 这是一个很有趣的话题,WebView在Android中包 ...
- 3. 用户/管理员注册登录 - 如何使用个人Google账号来登录注册门户网站
在Portal中可以通过选择Provider来为我们的门户提供多种第三方平台登录,下面我们通过配置Provider来建立Google个人账户登录Protal. 1. 首先需要我们注册一个Google账 ...
- 服务器端授权验证,移动应用的第三方平台登录在服务端的授权验证
如今,很多移动应用在做用户注册/登录的时候,为减少用户的交互成本,会考虑引入常用的第三方平台的开放登录授权来快速的将用户倒流到自己的平台中.在原来的第三方登录中,很多是采用基于 Web 的 Oauth ...
- 第三方登录如何给前台返回token_如何设计优雅的第三方账号登录?
# 前言 在互联网应用中,我们构建一个网站或APP,如果没有用户,那就没有价值.所以,如何吸引用户注册和登录,是一个重要问题,而这就涉及到账号体系了. 在应用构建初期,用户量较少,那么自建系统的账号体 ...
最新文章
- matlab求解外弹道,基于MATLAB∕Simulink的通用质点外弹道程序设计.pdf
- html中绝对定位的父级,父元素相对定位,子元素绝对定位
- 设置DateChooser控件的头部文字对齐方式.
- ChainMapper和ChainReducer
- java io字符输出流_JAVA IO 字符输入流与输出流总结说明
- 5827. 检查操作是否合法
- sqoop从HDFS导出数据到Mysql,卡在Running job: job_1571036741208_0010不动了,或者map 100% reduce 0%不动了
- vue中用数组语法绑定class
- 【离散数学】命题逻辑联结词的自然语言表述
- InputStream和OutputStream
- Ubuntu——运维的学习笔记
- Spark案例实战教程
- DAY3 购物车程序
- Spring Session + Redis 实现 Session 共享,附带 Nginx 集群
- Python Des加密与解密实现软件注册码、机器码
- 【网络存储】存储区域网络SAN
- 飞鸟尽,良弓藏;狡兔死,走狗烹。
- 实验一. 路由器IP地址配置及直连网络
- 清华大学计算机考研经历,2020清华大学计算机考研经验,相信梦想的力量
- 小葵花妈妈课堂开课了:《ThreadLocal 浅析》
热门文章
- Html5 canvas创意特效合集
- [20150311]x$bh的tch.txt
- kernal tch 下载 天正_kernal tch 下载 天正_tch kernal.arx
- unicode、utf-8、ansi、gbk、gb2312编码详解
- 使用深度学习实现iPhone X的FaceID
- 实时公交api的实现,全国200+城市实时精准API
- 连接wifi推送广告
- 变速自行车的变速、省力原理与窍门
- linux delay和sleep,Linux sleep usleep and delay
- [转] meta标签的使用方法