如何获得会话令牌谷歌+登录与解析在ios swift2



我正在使用google plus登录的一个应用程序
它可以正常工作,但我还想与parse集成
例如

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})

我也试过这个例子登录与google plus在ios上parse.com
但它是在objective c中,尝试转换为swift2但它也给出错误

请给我正确的解决方案

最终解决问题
将答案转换为swift代码并使其工作良好

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)")
        }
    }

希望对某人有所帮助!

我不认为这是一个错误的问题翻译到Swift(因为错误是由Parse本身在运行时产生的,而不是Swift编译器或Swift运行时)。尝试使用"PFUser.enableRevocableSessionInBackground()"。欲了解更多详情,请访问https://parse.com/tutorials/session-migration-tutorial。希望对你有帮助。欢呼。

最新更新