使用 Facebook 帐户登录和注销

Posted

技术标签:

【中文标题】使用 Facebook 帐户登录和注销【英文标题】:Login and Logout with Facebook account 【发布时间】:2018-01-28 10:28:18 【问题描述】:

我想将 Facebook 帐户登录添加到我的 ios 应用程序。我尝试安装 FacebookCore pod 和 FacebookLogin pod。我的登录操作成功,但是当我尝试注销然后再次登录时,浏览器使用了以前登录的帐户。这是我的登录和注销操作代码:

override func viewDidLoad() 
    super.viewDidLoad()

    let loginButton = LoginButton(readPermissions: [ .publicProfile ])
    loginButton.center = view.center
    //adding it to view
    view.addSubview(loginButton)
    loginButton.delegate = self


func loginButtonDidCompleteLogin(_ loginButton: LoginButton, result: LoginResult) 
    print("logged in")
    self.loginButtonClicked()


func loginButtonDidLogOut(_ loginButton: LoginButton) 
    print("logged out")
    AccessToken.current = nil
    UserProfile.current = nil
    FBSDKLoginManager().logOut()


//when login button clicked
func loginButtonClicked() 
    let loginManager = LoginManager()
    loginManager.loginBehavior = .web
    loginManager.logIn(readPermissions: [.publicProfile], viewController: self, completion: loginResult in
        switch loginResult 
            case .failed(let error):
                print("loginnnnnn errrooorrr",error)
            case .cancelled:
                print("User cancelled login.")
            case .success(let grantedPermissions, let declinedPermissions, let accessToken):
                self.getFBUserData()
        
    )


//function is fetching the user data
func getFBUserData()
    if((FBSDKAccessToken.current()) != nil)
        FBSDKGraphRequest(graphpath: "me", parameters: ["fields": "id, name, picture.type(large), email"]).start(completionHandler:  (connection, result, error) -> Void in
            if (error == nil)
                self.dict = result as! [String : AnyObject]
                self.isLogin = true
                print(result!)
                print(self.dict)
            
        )
    

如何使用其他帐户登录?

【问题讨论】:

我确定您已经看过这个very related question,这似乎表明您需要做的就是致电logOut。我不明白的是为什么您的某些代码在一个函数中显示FBSDKAccessToken 而在另一个函数中显示AccessToken @MichaelDautermann 我将每个 FBSDKAccessToken 更改为 AccessToken ,我尝试了所有此链接,但注销后我可以输入新的用户名密码,我在网络上收到此文本:您以前使用 Facebook 登录到 LoginSampleTaban。要继续吗? 我认为这是 FacebookSDK 中的一个问题,您必须自己从 safari 的 Facebook 页面注销用户。 您只能拥有一个帐户。为什么需要使用其他帐户登录? 正如@WizKid 所说,它已经考虑到每个用户只有一个facebook 帐户,并且提到的问题只发生在您处于开发测试模式时,而不是当您是真正的最终用户时。跨度> 【参考方案1】:

我有类似的问题,我收到了

您之前使用 Facebook 登录到 [应用名称]。你愿意吗 继续?

每次我想登录我的应用程序时,即使在注销后也是如此。

我通过使用 Facebook 原生应用程序(版本 177)解决了这个问题。 您可以在此处从您的应用中“注销”:

菜单选项卡 -> 设置 -> '应用程序和网站' -> '使用 Facebook 登录' -> 激活 -> 选择应用程序 -> 点击删除

【讨论】:

以上是关于使用 Facebook 帐户登录和注销的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Facebook 登录即使在卸载应用程序后清除缓存和注销

facebook登录和从网站注销?

Facebook 开发者登录错误

如何使用 Facebook SDK 在我的应用程序中注销 Facebook

Facebook iOS SDK 注销

Facebook 注销工作正常,但未完全注销