Goal:

Assumptions:个 对于那些 Select 不使用Facebook登录的用户,有一个本地身份验证(和注册)系统.

Details:

  • 假设我们希望为用户提供登录Facebook的选项,而无需为我们的系统创建单独的帐户/凭据.
  • 因为我们支持自己的原生身份验证机制(用户名和密码),所以我们有自己的用户ID,并颁发一个身份验证令牌,用于初始凭证验证后的后续交互.

我很惊讶Facebook在他们的开发人员文档中没有这方面的最佳实践.所有现有的文档要么是假设你将FB auth构建到一个网站中,要么是一个独立的移动应用程序,没有需要身份验证的服务.

这是我对如何设计的初步 idea ,但我想验证一下它是否正确.

  1. 客户端弹出Facebook iOS登录
  2. UI用户使用Facebook凭据登录并获得访问令牌
  3. iOS应用程序将访问令牌传递到我们的服务器
  4. 我们的服务器使用访问令牌与FB图API通信,以(A)验证令牌并(B)获得该访问令牌的FB用户ID.

    例如,我们的服务器将调用https://graph.facebook.com/me/?access_token=XYZ,这将在JSON对象中返回配置文件信息

  5. 假设它有效,我们的服务器将从JSON对象中提取用户ID,并判断该用户是否已经拥有帐户.如果是,我们会向客户端发布我们自己身份验证票证,以用于该会话.如果用户没有帐户,我们将使用Facebook用户ID创建一个新帐户,分配我们自己的惟一用户ID,并发布我们的身份验证票.

  6. 然后,客户端在需要身份验证的后续交互上传递身份验证票证.

对我来说,这似乎是正确的方法,但不确定我是否错过了一些非常基本的东西,并走上了错误(复杂)的道路.

推荐答案

我自己刚处理过这件事,这是让我头疼的部分:

在你的第五步...用户可以完全独立于其Facebook ID向您注册帐户,对吗?然后改天他们登录Facebook....你刚刚为他们创建了第二个帐户,却失go 了第一个帐户.

需要有一种方法来登录到您的Web服务,然后登录到Facebook,并捕获Facebook ID和本地帐户之间的关联.

除此之外,你的计划听起来很可靠.

Update:Facebook增加了一份概述这种情况的文件

Ios相关问答推荐

RN 0.63支持iOS ProMotion?

在SwiftUI中使用系统图像和色调创建圆形按钮

有没有办法观察滚动的SwiftUI图表的内容偏移量?

如何在iOS 17中拦截UITextView中的链接点击?UITextItemInteraction已弃用

SwiftData在获取值时应用程序崩溃:线程1:EXC_BREAKPOINT(代码=1,子代码=0x101e8303c)

如何在expo-react native中从ios平台中排除包

iphone 11 和 iphone 12 对于相同的布局显示不同的结果

核心媒体基础知识,了解 CMSampleBuffer、CMBlockBuffer 和 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer

将 URLCache 子类与 URLSession 一起使用

Flutter iOS 构建失败并在 ios/Runner/AppDelegate.swift 中出现多个错误

具有多个目标的应用程序的动态内容

将角半径仅应用于 Swiftui 中按钮的两个角

类型任何视图不能符合具有泛型的协议上的视图

.onChange(of: ) 一次用于多个 @State 属性?

clipShape swift的三元

从远程通知启动时,iOS 应用程序加载错误

界面生成器 - 无法从路径加载设计对象(空)

是否可以在没有 Mac 的情况下为 iOS 制作 PhoneGap 应用程序?

是否可以在 iOS 9 上让您的 iPad 应用退出多任务处理?

如何更改uitableview删除按钮文本