我正在开发一个使用 google plus 登录的应用程序
它工作正常,但我也想与解析集成
我有 refer例如
func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!) {
let token = auth.accessToken
PFUser.becomeInBackground(token, block: { (user : PFUser?, error : NSError?) -> Void in
if error != nil {
print("Error in become user : \(error)")
} else {
print("user : \(user)")
}
})
}
但它给了我类似的错误
Error in become user : Optional(Error Domain=Parse Code=209 "invalid session token" UserInfo={code=209, temporary=0, error=invalid session token, NSLocalizedDescription=invalid session token})
我也尝试过这个例子Login with google plus in ios on parse.com
但它是在 Objective C 中,尝试转换为 swift2 但它也给出错误
请给我正确的解决方案
最佳答案
终于解决了问题
转换 answer进入快速代码及其工作正常
func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!) {
if error == nil && auth.expirationDate.compare(NSDate(timeIntervalSinceNow: 0)) == NSComparisonResult.OrderedDescending {
let user = GPPSignIn.sharedInstance().googlePlusUser
let userName = user.name.JSONValueForKey("givenName") as! String
let userEmail = GPPSignIn.sharedInstance().userEmail
let pfUser = PFUser()
pfUser.username = userName
pfUser.email = userEmail
let userPassword = "\(userName)@123"
pfUser.password = userPassword
pfUser.signUpInBackgroundWithBlock({ (success, error : NSError?) -> Void in
if error == nil {
let plusService = GTLServicePlus()
plusService.retryEnabled = true
plusService.authorizer = GPPSignIn.sharedInstance().authentication
let query : GTLQueryPlus! = GTLQueryPlus.queryForPeopleGetWithUserId("me") as! GTLQueryPlus
plusService.executeQuery(query, completionHandler: { (ticket, person, error) -> Void in
if error != nil {
print("Error in execute query : \(error!)")
} else {
let aPerson : GTLPlusPerson! = person as! GTLPlusPerson
let imgUrl = aPerson.image.url
if let imgData = NSData(contentsOfURL: NSURL(string: imgUrl)!) {
self.userProfilePic.image = UIImage(data: imgData)
}
let currentUser = PFUser.currentUser()
currentUser?.username = aPerson.displayName
currentUser?.saveInBackground()
}
})
} else {
print("Error in signup : \(error!.localizedDescription)")
PFUser.logInWithUsernameInBackground(self.userName, password: userPassword, block: { (user : PFUser?, error : NSError?) -> Void in
if error == nil {
print("Login Sccessfully")
} else {
print("Error in login : \(error!.localizedDescription)")
}
})
}
})
} else {
print("Error in authentication : \(error.localizedDescription)")
}
}
希望对某人有所帮助!!!
关于ios - 如何在 ios swift2 中使用解析获取用于 google+ 登录的 session token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32797380/