2015-06-14 56 views
4

我看到我通過Facebook代碼的解析登錄如下所示。解析:Facebook用戶取消鏈接並再次登錄創建兩個用戶表條目

PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) { 
     (user: PFUser?, error: NSError?) -> Void in 
     if let user = user { 
      if user.isNew { 
       println("User signed up and logged in through Facebook!") 
       let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil) 
       graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 

        if ((error) != nil) 
        { 
         println("Error: \(error)") 
        } 
        else 
        { 
         let userEmail : NSString = result.valueForKey("email") as! NSString 
         println("User Email is: \(userEmail)") 
         user["email"] = userEmail 
        } 
       }) 
      } else { 
       println("User logged in through Facebook!") 
      } 
     } else { 
      println("Uh oh. The user cancelled the Facebook login.") 
     } 
    } 

退出方法是這樣的

PFFacebookUtils.unlinkUserInBackground(PFUser.currentUser()!) { (succeeded: Bool, error: NSError?) -> Void in 
     if succeeded { 
      FBSDKAccessToken.setCurrentAccessToken(nil) 
      FBSDKProfile.setCurrentProfile(nil) 
      PFUser.logOut() 
     } else { 
      println("Error") 
     } 
    } 

當用戶登錄的第一次,我看到解析在的authData指向Facebook的用戶表中創建行。註銷後,此authData被刪除。

問題是當用戶再次登錄時,解析創建另一行並鏈接指向Facebook的authData,有沒有辦法避免這種情況。我想使用之前創建的同一行並鏈接到Facebook登錄,而不是每次用戶註銷和登錄時創建多行。

我可以檢查電子郵件是否已經存在,但爲此我需要用戶再次登錄的電子郵件,當發生這種情況時,已創建一個新行。

+0

你解決了這個問題嗎? –

回答

3

您需要將用戶鏈接到Facebook帳戶,下面的代碼做此鏈接給你:

if !PFFacebookUtils.isLinkedWithUser(user) { 
    PFFacebookUtils.linkUserInBackground(user, withReadPermissions: nil, { 
    (succeeded: Bool?, error: NSError?) -> Void in 
    if succeeded { 
     println("Woohoo, the user is linked with Facebook!") 
    } 
    }) 
} 

From Parse.com documentation:

連接時所發生的步驟是非常相似的登錄。 區別在於,在成功登錄後,現有的PFUser將使用Facebook信息更新 。未來通過Facebook登錄後,用戶將登錄 到他們現有的帳戶。

+0

的確,同一頁面也告訴我們 - 我們的SDK接收用戶的Facebook訪問數據並將其保存到PFUser。如果沒有PFUser具有相同的Facebook ID,則會創建一個新的PFUser。這就解釋了爲什麼在我的情況下創建了一個新行。 – sysuser

+0

@sysuser就是這樣,我很高興你得到它,祝你的應用程序好運! – Icaro

+0

謝謝,文檔使它變得容易。 – sysuser

相關問題