在 Swift 的 FBSDK 中切换 FB 用户的问题
Posted
技术标签:
【中文标题】在 Swift 的 FBSDK 中切换 FB 用户的问题【英文标题】:issue switching FB users in FBSDK in Swift 【发布时间】:2017-10-08 18:45:57 【问题描述】:我有一个应用程序,它在应用程序内使用 FB 登录来收集用户的 FB id,我用它来创建指向他们的 FB 页面的链接,如下所示:
@IBAction func saveFacebookDidTap(_ sender: Any)
if sharingFacebook == false
if FBSDKAccessToken.current() == nil
print("no token")
login.logIn(withReadPermissions: ["public_profile"], handler: (result, error) -> Void in
if error == nil && !(result?.isCancelled)!
let fbloginresult : FBSDKLoginManagerLoginResult = result!
if fbloginresult.grantedPermissions.contains("public_profile")
print("success")
let parameters = ["fields" : "id"]
if FBSDKAccessToken.current() != nil
self.facebookButton.setTitle("Remove Facebook from your Profile", for: [])
self.sharingFacebook = true
FBSDKGraphRequest(graphpath: "me", parameters: parameters).start (connection, result, error) -> Void in
if error != nil
return
let data:[String:AnyObject] = result as! [String : AnyObject]
if let id = data["id"] as? NSString
//do stuf with the id
我也允许用户像这样删除这个 FB 链接:
else
self.sharingFacebook = false
self.facebookButton.setTitle("Add Facebook to your Profile", for: [])
FBSDKLoginManager().logOut()
我在使用 FB 登录页面时遇到问题。当用户点击添加他们的 FB 时,我看到一个页面显示“您之前使用 Facebook 登录到“应用名称”。您要继续吗?”我没有看到让我输入电子邮件和密码的字段。有什么我可能会遗漏的想法吗?
【问题讨论】:
【参考方案1】:我遇到了类似的问题。原因在这里解释:How to completely Logout of Facebook SDK Auth in ios App
我可以通过设置登录行为来解决这个问题,即
LoginManager.setLoginBehavior('web');
在开始登录之前。
【讨论】:
新语法是fbLoginManager.loginBehavior = .web
@StephanePaquet 解决了这个问题,通过提示他们每次登录尝试为 FB 用户/通行证空白...为什么很难让它填充字段并让用户在需要时进行编辑.我不喜欢任何一个选项。
我刚刚测试了 Dribble,他们的 Facebook 登录完全被破坏了。测试了 Pinterest,它与 OP 有相同的问题。如果我必须在 3 个问题之间进行选择,请选择 OP 发布并在 pintrest 中看到的初始问题。
重新发送 Facebook sdk 仅支持通过浏览器。我认为在 Iphone 设置中清除 Safari 历史记录是唯一的方法。【参考方案2】:
我在 Safari 缓存 Facebook 登录凭据时遇到了这个问题。转到设置...Safari ...清除历史记录和数据。解决了。
【讨论】:
有效,但不能推广,因为用户永远不会这样做。 是的。作为开发人员,这对我来说是一个测试问题,而不是最终用户的生产问题。【参考方案3】:可以通过设置不同的LoginBehavior来处理
让 loginManager = LoginManager()
loginManager.loginBehavior = .web
.native
:可以使用原生 Facebook 应用登录。
.浏览器
:尝试通过 Safari.app 或SFSafariViewController
(如果可用)登录。
.systemAccount
:尝试通过当前通过设备设置登录的 Facebook 帐户登录。
.web
:尝试通过模式WebView
弹出登录。
【讨论】:
以上是关于在 Swift 的 FBSDK 中切换 FB 用户的问题的主要内容,如果未能解决你的问题,请参考以下文章
无法在 swift 3 / FBSDK 4.17 中正确检索 FBSDKAccessToken 当前令牌
如何在 iPhone 的 Swift iOS 中使用 FBSDK 获取用户电子邮件地址?