Facebook第三方登录对接

一、背景调研

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统一提供。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36419.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原来支付宝、财付通每天都是这样对账、风控的!

为了可以更好地解释支付结算系统对账过程&#xff0c;我们先把业务从头到尾串起来描述一下场景&#xff0c;帮助大家理解&#xff1a;一个可能得不能再可能的场景&#xff0c;请大家深刻理解里面每个角色做了什么&#xff0c;获取了哪些信息&#xff1a; 某日阳光灿烂&#xff…

虚拟机网络发生错误,需要运行NetworkManager

虚拟机网络发生错误&#xff0c;需要运行NetworkManager 你只需要在root用户中输入systemctl start NetworkManager.service这一条简单的指令就行

VCSA7.0访问提示no healthy upstream故障解决方案

打开vCenter网页显示no healthy upstream报错&#xff0c;报错如图 解决办法&#xff1a; 1、使用SSH访问VSCA主机。 2、输入如下命令&#xff0c;检查证书有效期&#xff0c;发现__MACHINE_CERT证书到期。 for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do …

PG数据库提示: FATAL: sorry, too many clients already

目录 场景&#xff1a; idea启动提示如下错误 翻译&#xff1a; 连接数相关查询&#xff1a; 原因分析&#xff1a; 解决方法&#xff1a; 场景&#xff1a; idea启动提示如下错误 org.postgresql.util.PSQLException: FATAL: sorry, too many clients alreadyat org.pos…

vCenter Server出现no healthy upstream的解决方法

一天&#xff0c;访问vCenter&#xff0c;浏览器报&#xff1a;no healthy upstream&#xff0c;其他什么也没有 该 网上找了一些故障原因&#xff0c;诸如&#xff1a;vCenter Server部分服务没有运行&#xff0c;或者运行出现错误&#xff1b;vCenter Server设置的DNS服务器出…

GPT-4 太香了!

4月30日&#xff0c;OpenAI官方悄悄发布了联网版GPT-3.5。虽然名字变了&#xff0c;但使用体验却是换汤不换药&#xff0c;还是那套。 然而&#xff0c;万万没想到的是&#xff0c;刚过去没几天&#xff0c;昨天5月4日&#xff0c;鱼哥发现自己的Plus账号竟然多了一些能力&…

该为 GPT-4 降温了

文 / 韩彬&#xff08;微信公众号&#xff1a;量子论&#xff09; 昨天&#xff0c;微信里讨论GPT-4发布会内容的信息此起彼伏&#xff0c;我的心头又温暖又难过&#xff0c;感觉像是回到了乔布斯还在世的时候&#xff0c;大家激动讨论苹果发布会的那些日子。 同时&#xff0c;…

太炸了!GPT-4 Plus又推出新功能了!

最近Open AI 在GPT-4 Plus又更新了新功能。 支持Web Browsing with GPT-4 & Code Interpreter 新功能是按照plugin的方式集成的。如果有plus账号的朋友&#xff0c;可以去官方https://openai.com/blog/chatgpt-plugins&#xff0c;申请&#xff0c;也可以第一时间体验上面的…

Android开发之智能聊天机器人

Android开发之智能聊天机器人 一&#xff1a;效果图二:注册图灵机器人,获取api1.进入图灵机器人官网注册,已有账号的可直接登录2.点击创建机器人3.创建好机器人之后会得到一个ApiKey(如图所示)4.下面就要拼接Api地址了(拼接方法如图所示) 三.下面就是具体实现的代码了1.首先是布…

■ Android集成百度语音识别

实现这个功能的目的,是我看见我公司硬件工程师给客户回答问题的时候用公司研发的APP,每次都是手动输入打字,看着他带着老花镜的样子,于心不忍,毕竟咱就是干这个的. 实现效果 集成 百度语音实时识别 https://ai.baidu.com/sdk#asr AndroidManifest.xml 文件 <uses-permis…

百度云助力微信小程序图文识别,让你的应用更加高效智能

前言 如今人们对于信息的获取需求越来越高&#xff0c;而图像识别技术的发展为我们带来了更加便捷高效的信息获取方式。微信小程序作为一种新型的应用形态&#xff0c;越来越受到用户的青睐。而本文将为大家介绍微信小程序基于百度云的图文识别技术。让我们一起来看看微信小程序…

chatGPT 和AlphaGo下围棋,谁赢?垂域大模型有戏么?

这边来的少&#xff0c;但发个文章通报下近况&#xff0c;长期做AI产研、投融资工作后&#xff0c;后续主要在企业数字化与大模型结合的方向上&#xff0c;后续进展还是请关注&#xff1a;琢磨事。 上一篇提到最终大模型的格局很可能是有一个偏通用大模型&#xff0c;比如chatG…

chatgpt赋能python:用Python实现高效搜索文献

用Python实现高效搜索文献 作为研究学者&#xff0c;面对日益增多的文献量&#xff0c;如何高效地搜索文献成为了一大难题。然而&#xff0c;Python的强大功能和丰富的科学计算库为我们提供了一种新的解决方案。本文将介绍如何使用Python进行文献搜索&#xff0c;帮助广大学者…

浅浅了解一下SSM框架,全网最新

一.SSM框架初体验 作为当下流行的企业开发MVC开源框架&#xff0c;SSM框架是我们Java程序猿必须熟练掌握的知识点, SSM框架是spring MVC &#xff0c;spring和mybatis框架的整合. SSM框架是标准的MVC模式&#xff0c;将整个系统划分为表现层&#xff0c;controller层&#x…

浅浅的分享一下2022年ISCC

WEB 冬奥会&#xff1a;你来参加2022届冬奥会&#xff0c;想知道冬奥会的主办方想告诉你什么吗&#xff1f;题目入口&#xff1a;59.110.159.206:7060 我们根据审计可知需要我们构造 josn 然后 get 传参&#xff0c;需要绕过的地方&#xff1a; 1.is_numeric()对 year 的过滤…

冷热数据浅浅见

冷热数据浅浅见 一、前言二、冷热数据的标准&#xff08;判断&#xff09;三、判断冷热数据的算法3.1 基于数据结构特点的判断算法3.1.1 传统的方法3.1.2 改进的方法 3.2 基于统计学上的判断算法3.3 基于机器学习的判断算法 四、总结五、参考 一、前言 这个星期看了关于目前数…

商汤日日新大模型90天大升级!CEO现场整活,主打突破想象力

金磊 发自 WAIC量子位 | 公众号 QbitAI 商汤“日日新”AI大模型&#xff0c;如其名&#xff0c;真的做到了日日新。 这不&#xff0c;从发布到现在&#xff0c;时隔仅仅3个月&#xff0c;商汤便正式宣布&#xff1a; 商汤日日新&#xff08;SenseNova&#xff09;大模型体系全面…

一张快照就能还原出一段视频!AAAI 2023论文提出快照压缩成像新算法 | 开源

飞晔 投稿量子位 | 公众号 QbitAI 随着光学算法发展&#xff0c;如今我们用低维传感器也能“捕获”高维信号了。 举个例子&#xff0c;这是我们用2D传感器拍到的一张“照片”&#xff0c;看起来充满了噪声数据&#xff1a; 然而&#xff0c;正是通过这张“照片”所包含的数据&a…

微信春节大数据出炉:《三体》阅读量第一 ;曝iOS 17应用商店将向第三方开放;斯坦福大学推出DetectGPT|极客头条

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&…

chatgpt赋能python:Python如何输出彩色的文字

Python如何输出彩色的文字 介绍 Python是一种高级编程语言&#xff0c;它广泛用于数据处理、人工智能、机器学习等各种领域。在Python编程中&#xff0c;输出信息是非常重要的部分。而有时&#xff0c;我们可能希望将输出的信息以不同的颜色呈现&#xff0c;以便更好地区分不…