一、背景调研

1、什么是第三方登录?

第三方登录是基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能。而这里的第三方平台,一般是已经拥有大量用户的平台,国外的比如Facebook,Twitter等,国内的比如微博、微信、QQ等。 第三方登录的目的是使用用户在其他平台上频繁使用的账号,来快速登录己方产品,也可以实现不注册就能登录。

2、第三方登录的优缺点分析

优点:

简化注册环节,减少可能因为注册繁琐带来的用户损失;简化用户设置个人信息过程,通过第三方登录,直接获取用户头像昵称等基本个人信息,无需用户自行设置;共享账号已有的用户关系,用户进入产品中就能找到熟悉的人,容易留住用户,发现同样使用该应用也用同样第三方方式登录的好友,会有惊喜感;节省用户的记忆成本,用户在使用多个应用时,只需使用第三方登录即可,无需记得每个平台的账户和密码;用户可以把平台上的某些内容一键分享到第三方平台。

缺点:

后台没有创建自己的账户体系时,只用第三方登录,不便于更多维度收集用户信息(主要是用户手机、邮箱),导致后期无法更精细化执行一些运营的策略,比如一些电商平台这一点尤其重要;后台创建了自己的账户体系时,若没有设计好合理的第三方和本地账户对接的方案,会导致同一个用户在平台上有多个账号的情况发生;会受到第三平台影响,比如第三方账户因为某种原因封号了,则会直接导致用户的流失;隐私可能会受到影响,导致自己的一些状态,或者信息间接的被第三方账户里的好友看到。

二、技术调研

登录具体流程时序图

1、用户点击Facebook登录按钮, 开始调用SDK的相关方法,进入登录流程
2、Facebook登录成功后,返回AccessToken 给APP
3、APP侧拿到AccessToken后,从中提取出部份数据,如userId, token等,调用我们自己用户服务端的登录接口
4、用户服务端判断该用户是否为新用户,如果是新用户,则要求绑定手机号。然后新增一条用户数据记录以及三方用户关联记录。
5、后端用户服务器返回登录的状态给APP

三、Android端详细接入方案

1、官方文档

https://developers.facebook.com/docs/facebook-login/android

2、准备相关资源

2.1 去官网上注册帐号
2.2 创建APP, 得到AppId

2.3 输入相关的信息

2.4 创建成功后会得到一个APPID

2.5 选择Login功能

2.6 根据需要选择各端的接入方案

3、实施步骤

3.1、具体步骤可以参看:https://developers.facebook.com/apps/317000860444250/fb-login/quickstart/
3.2、需要设置包名,key hash, 根据文档配置即可。
3.3、官方Demo https://github.com/facebook/facebook-android-sdk

4、示例代码

4.1 嵌入登录的按钮

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/info"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:textSize="18sp"/><com.facebook.login.widget.LoginButtonandroid:id="@+id/login_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="30dp"android:layout_marginBottom="30dp" /></LinearLayout>

4.2 注册登录的回调

mLoginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() {@Overridepublic void onSuccess(@NonNull LoginResult loginResult) {setResult(RESULT_OK);finish();}@Overridepublic void onCancel() {setResult(RESULT_CANCELED);finish();}@Overridepublic void onError(@NonNull FacebookException e) {// Handle exception}});

4.3 登录后返回的数据LoginResult, 其数据结构如下:

data class LoginResult
@JvmOverloads
constructor(val accessToken: AccessToken,val authenticationToken: AuthenticationToken? = null,val recentlyGrantedPermissions: Set<String>,val recentlyDeniedPermissions: Set<String>
)

4.4 AccessToken的数据结构

constructor(accessToken: String,applicationId: String,userId: String,permissions: Collection<String?>?,declinedPermissions: Collection<String?>?,expiredPermissions: Collection<String?>?,accessTokenSource: AccessTokenSource?,expirationTime: Date?,lastRefreshTime: Date?,dataAccessExpirationTime: Date?,graphDomain: String? = DEFAULT_GRAPH_DOMAIN
)

5、Demo演示(以Instagram为例)

场景一:如果用户手机安装有Facebook,但没有登录,此时进入Instagram登录页,采用了Facebook登录,点击登录页的按钮,跳转到Facebook的登录页,登录成功后,再跳回到Instagram.

场景二:如果用户手机没有安装Facebook app, 此时进入Instagram登录页,采用了Facebook登录,点击登录页的按钮, 会打开一个H5页面,用户输入帐号,密码,登录成功后再跳转回Instagram 登录页,走后续流程。

.
场景三:如果用户的手机装有facebook app, 并且登录成功,在Instagram app首页的登录按钮会显示用户的Facebook呢称,点击登录,即可采用facebook帐号登录

6、其它

SDK 版本号
最小版本号使用 8.1, 建议使用最新版本
implementation ‘com.facebook.android:facebook-android-sdk:latest.release’

四、IOS端详细接入方案

1、 官方文档

https://developers.facebook.com/docs/facebook-login/ios

2、准备相关资源

2.1 去官网上注册帐号
2.2 创建APP, 得到AppId

2.3 输入相关的信息

2.4 创建成功后会得到一个APPID

2.5 选择Login功能

2.6 根据需要选择各端的接入方案

3、实施步骤

3.1、具体步骤可以参看:https://developers.facebook.com/apps/317000860444250/fb-login/quickstart/
3.2、需要设置包名,key hash, 根据文档配置即可。

4. Demo演示

核心方法:

1、 调用facebook登录事件,监听回调

已经登录过的页面

2、 监听登录结果

也可以直接以这种方式访问,accessToken SDK在登录完成以后会存储在keychain里面

3、返回的数据

得到的数据对象为 FBSDKAccessToken,具体属性查看下图

userID 作为用户标识

五、三方登录与现有用户系统整合

数据库表设计(参考):https://justauth.wiki/features/integrate-existing-systems/#%E5%8F%91%E7%8E%B0%E9%97%AE%E9%A2%98

注:由于网络限制,在使用国外平台时,需要额外配置代理服务器地址和端口号。需要IT统一提供。

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第三方登录前后端分离

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

  4. Facebook第三方登录流程总结

    Facebook第三方登录流程总结 授权Facebook第三方登录流程 开发步骤 Facebook应用配置 前端授权 后端校验 授权Facebook第三方登录流程 有时候为了迅速获客,会在注册登录页支 ...

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

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

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

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

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

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

  8. iOS Facebook第三方登录

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

  9. Android 实现 Facebook 第三方登录

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

最新文章

  1. 拼命学的编程,你却可能错过一个亿!
  2. uml识别事件表格_LOPA分析:使能条件和修正因子在场景识别方法中的应用
  3. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening
  4. vue内容横向循环滚动_vue文字横向滚动公告
  5. 2011-8-31 身体欠佳
  6. android ctrl 左键鼠标左键直接打开xml文件夹,设置Android Studio通过Ctrl+左键查看源码...
  7. C++Builder2010创建线程
  8. Scrapy爬取多层级网页内容的方式
  9. HP RDX备份磁带系统的突破性特点
  10. 一个在线免费短网址生成API
  11. 小米Note标配版 双网通刷原生安卓7.0教程(详细)
  12. 在线查看相机快门次数
  13. 细数那些年我们一起玩过的Unity3D游戏(unity开发的游戏有哪些)
  14. 力扣 25. K 个一组翻转链表
  15. AML(Automation Markup Language)简单介绍
  16. arduino 长传出错_请问Arduino IDE在编译时正常,却无法上传且显示找无效库是怎么回事?...
  17. HDL-Bits 刷题记录 01
  18. 王家林大咖10年时光雕琢出的1306页的大数据+AI新书立体书发布:《Spark大数据商业实战三部曲:内核解密|商业案例|性能调优》第二版 清华大学出版社即将印刷出版
  19. 可视化数据大屏选择简报
  20. 五年级计算机教案上册,五年级上册信息技术教案【三篇】

热门文章

  1. 【wiki维基百科中文数据集】抽取wiki数据集——实操
  2. php fpm工作原理,phpfpm工作原理是什么?
  3. android 录像限制时间,视频拍摄能不能限制拍摄时间和微信小视频一样
  4. Surface Pro 3 的 USB 和蓝牙设备无法使用的处理方法
  5. 请问mysql数据类型是否区分大小写?
  6. s3c2440 uboot 移植 (四)支持环境变量在nandflash 存储
  7. C++ : 陶陶摘苹果
  8. Android studio安装教程(2020/11/20最新版本的安装)
  9. 致远OA管理员密码的重置
  10. 用python来解 PAT乙级1082射击比赛 -20-满分