ios - 如何在 ios swift2 中使用解析获取用于 google+ 登录的 session token

标签 ios swift parse-platform google-plus swift2

我正在开发一个使用 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/

相关文章:

javascript - 错误 = "TypeError: Object [object Object] has no method ' addUnique'\n 在 main.js :33:12"; Cloud code parse. com

ios - 类对象始终为空

ios - 在swift中使用objectmapper库的Json解析问题

swift - StoryboardUI如何让标签跟随 slider

swift - 如何访问从 Firebase 下载的 SceneKit 文件?

ios - Swift Parse - 使用 PFQuery 或 QueryWithSubqueries 函数

ios - 如何通过约束调整此 View

ios - free() 适用于 iOS 模拟器,但不适用于真实设备

swift - 定时器在停用后继续触发

ios - 如何让程序在后台运行?