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!") } }) }
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
Post a Comment