ios - Parse: Facebook user unlink and login again creates two user table entries -


i see parse login through facebook code looks this.

pffacebookutils.logininbackgroundwithreadpermissions(permissions) {         (user: pfuser?, error: nserror?) -> void in         if let user = user {             if user.isnew {                 println("user signed , 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. user cancelled facebook login.")         }     } 

logout method looks this

pffacebookutils.unlinkuserinbackground(pfuser.currentuser()!) { (succeeded: bool, error: nserror?) -> void in         if succeeded {             fbsdkaccesstoken.setcurrentaccesstoken(nil)             fbsdkprofile.setcurrentprofile(nil)             pfuser.logout()         } else {             println("error")         }     } 

when user logs in first time, see parse creates row in user table authdata pointing facebook. upon logging out, authdata erased.

the problem when user logs in again, parse creates row , links authdata pointing facebook, there way avoid this. want use same row created before , link facebook login instead of creating multiple rows every time user logs out , login.

i check if email exists, need email of user logging in again , when happens, new row created.

you need link user facebook account, code below link you:

if !pffacebookutils.islinkedwithuser(user) {   pffacebookutils.linkuserinbackground(user, withreadpermissions: nil, {     (succeeded: bool?, error: nserror?) -> void in     if succeeded {       println("woohoo, user linked facebook!")     }   }) } 

from parse.com documentation:

the steps happen when linking similar log in. difference on successful login, existing pfuser updated facebook information. future logins via facebook log in user existing account.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

php - Find a regex to take part of Email -

javascript - Function overwritting -