第三方登陆--接入谷歌和FaceBook

2023-11-07

一、第三方登陆流程

在这里插入图片描述

 一、用户点击登录,前端会调用第三方的SDK,获取到对应的数据,一般会有token、userId。

二、前端拿到这些信息之后,回调自己后端服务端的接口,进行token校验。主要目的是后端得防止他人使用恶意手段,别的平台,或者是同一个平台不同账号的授权token进行登录。

三、一般拿到前端传入的token,去调用第三方提供的token校验接口,会返回对应的信息。一般都会返回userId,这个时候可以拿前端传入的userId做进一步的比较,如果token校验,第三方返回true,且userId相等。说明第三方已经授权。

四、到了这一步,就进入自己的业务流程了,比如:记录用户第三方解析出来得信息,如:邮箱之类的。之后后端在生成自己方的token,返回给前端使用即可。

二、FaceBook登录

一、前端拿到facebook返回的token后,调用后端的登录接口,后端进行token的校验,

调用FaceBook接口:
1、获取accessToke
https://graph.facebook.com/oauth/access_token?client_id= &client_secret= &grant_type=client_credentials

client_id:此处使用的是Facebook提供的appId

client_secretFacebook提供的秘钥

grant_type:client_credentials  固定参数,写死

这步目的是为了获取access_token,用于token校验

2、校验前端传来的token:这里有两种方式

https://graph.facebook.com/debug_token?access_token=  &input_token=

第一种:

access_token:放入1中获取到的access_token。

input_token:放入前端传入的token,用于校验正确性

第二种:

access_token:是由appId和appSecret拼接而成,格为 {appId}%7C{appSecret}%7C就是|urlencode之后的编码。

input_token:放入前端传入的token,用于校验正确性

二、最后会得到如下结果,有些可能有些差别,但是不管有多大差别,红色部分是肯定有的

{
    "data": {
        "app_id": "746492673568696",
        "type": "USER",
        "application": "shop",
        "data_access_expires_at": 1594896505,
        "expires_at": 1587124800,
        "is_valid": true,       注意:第三方返回的token的正确信标志
        "scopes": [
            "user_birthday",
            "user_likes",
            "user_photos",
            "user_friends",
            "user_status",
            "email",
            "public_profile"
        ],
        "user_id": "110029804771531"
    }
}
 

三、获取Facebook用户邮箱

如果在二步骤中解析出来的信息没有邮箱,我们可以通过下面的接口拿到对应的Facebook邮箱。

获取Facebook邮箱信息:
https://graph.facebook.com/userId?fields=email&access_token=

userId:此处直接放入二步骤中解析到的userId

fields:此处写死email这个单词

access_token:放入前端传入的token

最后可得到用户注册第三方的邮箱

如果你还需要获取其他信息,可参考官方文档:https://developers.facebook.com/docs/graph-api/overview 

三、谷歌登录

一、前端拿到谷歌token后,传入对应的后端接口。进行token校验。

直接调用下面接口进行token校验:
https://www.googleapis.com/oauth2/v3/tokeninfo?id_token="

id_token:此处为前端传入token

 二、以下是返回参数,可能部分有些不同,但是红色部分是一定有的

{
 // These six fields are included in all Google ID Tokens.
 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",   第三方id
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",

 // These seven fields are only included when the user has granted the "profile" and
 // "email" OAuth scopes to the application.
 "email": "testuser@gmail.com",
 "email_verified": "true",       验证成功标志
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第三方登陆--接入谷歌和FaceBook 的相关文章

随机推荐

  • 设计模式--策略模式

    文章目录 策略 Strategy 模式 策略模式的收银软件 策略模式的特点 使用场景 优缺点 策略模式和工厂模式的结合 策略 Strategy 模式 本质 分离算法 选择实现 策略模式 针对一组算法 将每一个算法封装到具有共同接口的独立的类
  • g2o 学习

    参考文章 如需详细请看原文 SLAM从0到1 6 图优化g2o 从看懂代码到动手编写 长文 yikang的文章 知乎 https zhuanlan zhihu com p 121628349 从零开始一起学习SLAM 理解图优化 一步步带你
  • SSH连接服务器经常被断开解决方法

    SSH连接服务器经常被断开解决方法 vim etc ssh sshd config UseDNS no 修改成功之后 重启SSH服务 service sshd restart 连接服务器超时掉线解决办法 vim etc ssh sshd c
  • 推荐!国外程序员整理的机器学习资源大全

    本文汇编了一些机器学习领域的框架 库以及软件 按编程语言排序 C 计算机视觉 CCV 基于C语言 提供缓存 核心的机器视觉库 新颖的机器视觉库 OpenCV 它提供C C Python Java 以及 MATLAB接口 并支持Windows
  • vrep笔记

    这些天主要对vrep做了一些探索 一些笔记如下 1 urdf机器人模型文件的导入 点击plugins urdf importing即可 2 动力学模型的配置 将此处改成零 大意是以方框的正中心为质心 否则很容易抖 模型导入后坐标系都会被这个
  • NLP预训练模型系列-BERT

    NLP预训练模型系列文章目录 1 BERT 2 GPT 3 GPT 2 4 GPT 3 5 RoBERTa 6 BART 7 XLNet 目录 NLP预训练模型系列文章目录 前言 从BERT开始 1 Abstract 2 Introduct
  • 基于Django的员工管理系统1

    主题 员工管理系统 1 新建项目 2 创建app python manage py startapp app01 点击 run manage py Task 然后输入startapp app01 注册app 3 设计表结构 models p
  • IT技术岗位面试怎么介绍自己的项目经验?

    泽林又一批学员即将毕业 需要为面试做一些准备 都说面试7份靠能力 3份靠技能 而开始时的介绍项目又是技能中的重中之重 决定一次面试的成败 那么面试时如果介绍自己的项目呢 泽林教育为你们梳理了一份详细的项目经验介绍 预测面试官提问 先规划好答
  • android-smart-image-view源码分析

    public class BitmapImage implements SmartImage 定义Bitmap对象 private Bitmap bitmap 构造方法 public BitmapImage Bitmap bitmap th
  • 字面值。。

    1概念 不能改变的量 2 分类 基本类型 整型 short int 没有短整型字面值 int 100 d long int 100L ld long long int 100LL lld unsigned short int 没有短整型字面
  • git 在不同服务器主机上同步 git 仓库

    git 在不同服务器主机上同步 git 仓库 参考链接 https opentechguides com how to article git 177 git sync repos html 1 在本地的一个文件夹中执行 git clone
  • js实现AES加密

    安装第三方加密包 npm i crypto js 加密代码 let str 需要加密的字符串 let keyStr 密钥 let ivStr iv偏移量 const key CryptoJS enc Utf8 parse keyStr 十六
  • WGS84坐标系下大地坐标转换为空间直角坐标

    大地坐标表示方法 BLH 空间直角坐标表示方法 XYZ 进行地图投影的一般操作步骤为先将BLH转换为XYZ 然后将XYZ通过三参数或者7参数的办法转换为xyz 涉及到两个椭球体以及坐标系之间的转换 本文主要讨论BLH转换为XYZ的办法 通过
  • 线性代数的本质(二)——线性变换与矩阵

    文章目录 线性变换与矩阵 线性变换与二阶方阵 常见的线性变换 复合变换与矩阵乘法 矩阵的定义 列空间与基 矩阵的秩 逆变换与逆矩阵 线性变换与矩阵 线性变换与二阶方阵 本节从二维平面出发学习线性代数 通常选用平面坐标系 O x y Oxy
  • Java中jdbc的框架

    使用框架可以简化代码 提高开发效率 所以了解和掌握一些框架也是必须的 下面简单介绍几个jdbc框架 1 jdbcTemplate Spring提供 2 commons dbutils Apache提供 小巧的jdbc轻量级封装的工具包 主要
  • 【YARN】(1)-- 整体架构、RM、NM、AM等基础组件快速理解

    一 Yarn的功能和整体架构 Apache Hadoop YARN Yet Another Resource Negotiator 另一种资源协调者 是一种新的 Hadoop 资源管理器 它是一个通用资源管理系统和调度平台 可为上层应用提供
  • 什么是自动化测试?如何开展自动化测试你需要知道这些点

    目录 前言 什么是自动化测 分层的自动化测试 我为什么要做自动化测试 什么项目适合做自动化测试 选择什么工具进行自动化测试 selenium 用前须知 selenium IDE selenium Grid selenium RC selen
  • 怎样用苹果手机播放html文件夹,无需转格式 如何用iPhone轻松爽看各种片

    iPhone 5问世后 瞬间就成为了大家追随的最热门产品之一 无论是最具创新还是最热门 每一款产品推出后总是会存在遗憾的 iPhone 5同样不例外 在大家眼中它可能有这样或那样的问题 但是在我看来 自带视频播放器仅支持指定苹果标准视频 不
  • uni-app根据经纬度逆解析详细地址

    uni app中的getLocation 方法可以获取到用户当前的地理位置 经纬度 速度 但是返回参数中的address在app中才会显示 小程序中不会显示 所以我们需要进行逆解析其地址 解析出它的地址信息 1 首先要在腾讯位置服务中 控制
  • 第三方登陆--接入谷歌和FaceBook

    一 第三方登陆流程 一 用户点击登录 前端会调用第三方的SDK 获取到对应的数据 一般会有token userId 二 前端拿到这些信息之后 回调自己后端服务端的接口 进行token校验 主要目的是后端得防止他人使用恶意手段 别的平台 或者