Facebook第三方登录流程总结

  • 授权Facebook第三方登录流程
  • 开发步骤
    • Facebook应用配置
    • 前端授权
    • 后端校验

授权Facebook第三方登录流程


有时候为了迅速获客,会在注册登录页支持第三方登录,比如国内一些小众论坛的qq登录

简书的社交账号登录

CSDN的社交账号登录

一些国际的软件/网站支持的比较多的第三方登录是Google第三方登录、Facebook第三方登录等。这里记录下Facebook第三方登录的过程。下面是一个Facebook第三方登录流程示例:

  1. 用户点击Facebook登录按钮,客户端(App、Browser等)向Facebook发起请求,用户在Facebook的页面输入登录信息(用户名、密码……),登录成功后Facebook回调客户端并带回用户的Facebook信息
  2. 客户端把用户登录Facebook的token发送至服务端,服务端调Facebook的token验证接口验证token是否有效
  3. 如果有效,至此Facebook第三方登录就成功了。

上面流程图只是个例子,再往下就是根据业务需求,看都需要用Facebook的那些用户信息,再在经过授权的情况下去调用Facebook接口查询。如果需要继续绑定手机号就再继续走下面绑定手机号的流程。

开发步骤


Facebook应用配置
  1. 在 https://developers.facebook.com 开通Facebook开发者账号

  2. 创建应用

  3. 配置相关参数,在这里把AppId(应用编号)和AppSecret(应用秘钥)记下来。

  4. 添加产品

    可以添加Android、IOS、web页面等类型的授权登录

前端授权
  1. 配置回调地址。这里以网页版的授权为例,如果开发网页版的Facebook授权登录,需要在Facebook后台配置有效OAuth跳转URI,就是用户在Facebook登录页面登录成功之后需要回调到部署你自己的登录页面的服务器地址

  2. 授权登录sdk,Facebook官方提供了详细的说明,也有现成的sdk和完整的demo。官方文档: https://developers.facebook.com/docs/facebook-login/web
    示例:login.html

<html><head><script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v6.0&appId=746492673568696&autoLogAppEvents=1"></script><script>function login() {FB.login(function(response){console.log(response);});}</script></head><body><h1>Facebook登录</h1><!-- 自定义登录按钮 --><button id="loginBtn" onclick="login();" >登录</button> </body>
</html>

这个网页不能直接用浏览器打开,需要部署在支持https的服务器上。

下面是点击登录按钮后跳转到Facebook登录页面的截图:
           

用户输入Facebook的用户名、密码,登录后,可以看到即将授权到应用的信息(包括图标、隐私权政策、服务条款等),就是在Facebook开发者管理后台配置的那些信息:
           

登录成功之后可以看到控制台打印出了登录成功后Facebook返回的信息,有accessToken、userID等:
           

后端校验

前端拿到登录token后,需要后端校验一下,防止别人拿其他平台的appId授权的token来请求。

可以用 https://graph.facebook.com/debug_token?access_token={App-token}&input_token={User-token}这个接口来校验token,User-token为用户登录的token(比如上面用户登录返回的accessToken),App-token是由appId和appSecret拼接而成,格式为 {appId}%7C{appSecret}%7C就是|urlencode之后的编码。

比如appId是746492673568696,appSecret是71cf85a8ba36c84b22bc3461e143e16b,那就可以直接用发送get请求https://graph.facebook.com/debug_token?access_token=746492673568696%7C71cf85a8ba36c84b22bc3461e143e16b&input_token=前端用户登录返回的accessToken,返回结果的格式如下

{"data": {"app_id": "746492673568696","type": "USER","application": "shop","data_access_expires_at": 1594896505,"expires_at": 1587124800,"is_valid": true,"scopes": ["user_birthday","user_likes","user_photos","user_friends","user_status","email","public_profile"],"user_id": "110029804771531"}
}

其中is_valid就是token是否校验成功。如果还需要获取其他用户信息,可以参考Facebook提供的api https://developers.facebook.com/docs/graph-api/using-graph-api

Facebook第三方登录流程总结相关推荐

  1. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 第三方登录流程 OAuth 应用 OAuth 实现 Face ...

  2. Java实现Facebook第三方登录

    第一次接触Facebook第三方登录,可能有些地方做的并不全面,只是尝试着做了一个小demo,因为国内接入Facebook的项目并不多,并且多数都是Android或IOS的实现,所以资料也特别少,在此 ...

  3. 详细前后端分离实现facebook第三方登录的全过程(国内一般都是用Android和ios,并且资料稀少)

    实现facebook第三方登录全过程 需求 官方文档与校验工具 详细步骤 1.注册一个facebook的账号 2.登录https://developers.facebook.com/ 3.点击我的应用 ...

  4. facebook第三方登录前后端分离

    facebook第三方登录三种实现方式:第三种我认为方便简单 1.js sdk 直接在官网看文档 直接调用他的sdk 官网:https://developers.facebook.com/docs/f ...

  5. Facebook第三方登录对接

    一.背景调研 1.什么是第三方登录? 第三方登录是基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能.而这里的第三方平台,一般是已经拥有大量用户的平台,国外的比如Facebo ...

  6. iOS Facebook第三方登录

    由于当前项目需要有facebook和google的第三方登录,所以简单整理了一下相关流程,今天主要说一下facebook的第三方登录以及注意的地方. 总结 1.申请facebook账号 2.创建应用 ...

  7. Google及Facebook第三方登录问题,“将你登入到此应用时出错,请稍后再试”

    最近项目需求,需要加上Google及Facebook的第三方登录功能.在根据官方文档按步骤完成配置后,在真机上测试正常. Google登录官方指导文档:https://developers.googl ...

  8. Facebook第三方登录切换账号的问题

    错误信息 公司接入了Facebook的第三方登录功能.发现一个问题,就是第一次登录之后,下次再登录就只有两个按钮:以上次的身份继续登录,取消登录.如果想使用另一个账号登录的话,就只能从Facebook ...

  9. Android 实现 Facebook 第三方登录

    Facebook 的 Android 登录链接,其中包含了很多账号注册信息.这里贴出一些 facebook 登录中重点的代码,申请的 App 相关信息这里就不多介绍,Facebook 此网页支持中文. ...

最新文章

  1. OpenCV——膨胀与腐蚀
  2. 谁的青春不迷茫,其实我们都一样
  3. 第一本的java 的小总结
  4. 企业网站关键字要学会注重重点优化!
  5. 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序
  6. SMARTFORM 转 PDF
  7. [Poj 1459] 网络流(一) {基本概念与算法}
  8. hypot函数_hypot()函数与C ++中的示例
  9. 中等职业学校计算机专业定位,中等职业学校计算机专业教学探讨
  10. 【二分】【中等难度】noip模拟赛 聪哥的工资
  11. WCF编程]WCF使用Net.tcp绑定时候出现错误:元数据包含无法解析的引用
  12. 去除点击链接时出现的虚线框
  13. matlab导入数据文件,matlab怎么导入mat数据文件
  14. android fsck_msdos 分析(二)
  15. 数据库基础知识(1)--数据库php连接
  16. 斐波那契数列python编程_fibonacci数列-斐波那契数列-python编程
  17. Python学习之路(四)——Python核心编程3(面向对象、模块_包_异常)
  18. 如何解锁CourseHero文档
  19. 服务器主板显示ff,MSI K9A2-CF主板显示错误代码“FF”
  20. Android 9 安卓P System-as-root

热门文章

  1. Java窗体实现飞机躲子弹游戏
  2. windet插入图片的大小_LaTeX的图片插入及排版
  3. 使用leaflet仿原神提瓦特大地图制作日记
  4. java版QQ 欢迎点评
  5. 《连线》杂志:Web已死 Internet永生(全文),互联网营销
  6. KPI、KPA、OKR
  7. TwinCAT隐藏开机画面
  8. Memcached快递上手之C#
  9. HEXO启动,初始化,本地页面成功启动,(Win 7 64 bit)可以在浏览器打开http://localhost:4000
  10. HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者