2015-09-07 3 views
-2

1) Я пытаюсь получить доступ профиль твиттер фото и загрузить его на объект пользовательского синтаксического анализаIOS - Swift - Разобрать - Twitter Профиль Фотография

2) Ниже приведен код, я использую.

if PFTwitterUtils.isLinkedWithUser(user){ 
     //copy data to parse user 
     let screenName = PFTwitterUtils.twitter()?.screenName! 
     let requestString = ("https://api.twitter.com/1.1/users/show.json?screen_name=" + screenName!) 
     let verify: NSURL = NSURL(string: requestString)! 
     let request: NSMutableURLRequest = NSMutableURLRequest(URL: verify) 
     PFTwitterUtils.twitter()?.signRequest(request) 
     var response: NSURLResponse? 
     var error: NSError? 
     let data: NSData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)! 
     if error == nil { 
      let result: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &error) 
      //let names: String! = result?.objectForKey("name") as! String 
      //let separatedNames: [String] = names.componentsSeparatedByString(" ") 
      //var firstName = separatedNames.first! 
      //var lastName = separatedNames.last! 
      let urlString = result?.objectForKey("profile_image_url_https") as! String 
      let hiResUrlString = urlString.stringByReplacingOccurrencesOfString("_normal", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil) 
      let twitterPhotoUrl = NSURL(string: hiResUrlString) 
      let imageData = NSData(contentsOfURL: twitterPhotoUrl!) 

      if(imageData != nil) { 
       let profileFileObject = PFFile(data:imageData!) 
       user.setObject(profileFileObject, forKey: "profilePicture") 
      } 

      user.saveInBackgroundWithBlock({ (success:Bool, error:NSError?) -> Void in 
       if(success) { 
        //println("User details are now updated") 
        user.pinInBackgroundWithBlock({ (pinUserSuccess:Bool, pinUserError:NSError?) -> Void in 
         if (pinUserSuccess){ 
          println("User successfully pinned in twitter") 
         }else { 
          println("Error in pining the user") 
         } 
        }) 
       } 
      }) 
     } else { 
      println(error?.description) 
     } 

3) Я использую интерфейс пользователя Parse для входа в систему, используя твиттер. Это работает. Я могу получить доступ к имени экрана

4) Я проверяю это на тренажере

Вопрос 1 -

В приведенном выше коде я получаю ошибку в приведенном ниже коде. Пожалуйста помоги!

let data: NSData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)! 

Ошибка домена = NSURLErrorDomain Code = -1012 \ "Операция не может быть завершена. (NSURLErrorDomain ошибка -1012.) \" UserInfo = 0x7fd11aab87a0 {NSErrorFailingURLStringKey = https://api.twitter.com/1.1/users/show.json?screen_name=jayskapadia, NSUnderlyingError = 0x7fd11aab51b0 \ "Операция не мог (kCFErrorDomainCFNetwork error -1012.) \ ", NSErrorFailingURLKey = https://api.twitter.com/1.1/users/show.json?screen_name=jayskapadia}

Вопрос 2 - Я также хочу получить доступ к идентификатору электронной почты из профиля твиттера. Как мне это сделать?

+0

Также я забыл добавить, я использовал эту ссылку для справки http://stackoverflow.com/questions/29924749/getting-twitter-profile-image- with-parse-in-swift –

ответ

1

фото часть теперь работает с кодом ниже

if PFTwitterUtils.isLinkedWithUser(user){ 
     //copy data to parse user. 
     let screenName = PFTwitterUtils.twitter()?.screenName! 

     let verify = NSURL(string: "https://api.twitter.com/1.1/account/verify_credentials.json") 
     var request = NSMutableURLRequest(URL: verify!) 
     PFTwitterUtils.twitter()!.signRequest(request) 
     var response: NSURLResponse? 
     var error: NSError? 
     var data:NSData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)! 

     if error == nil { 
      let result: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &error) 
      //let names: String! = result?.objectForKey("name") as! String 
      //let separatedNames: [String] = names.componentsSeparatedByString(" ") 
      //var firstName = separatedNames.first! 
      //var lastName = separatedNames.last! 
      let urlString = result?.objectForKey("profile_image_url_https") as! String 


      let hiResUrlString = urlString.stringByReplacingOccurrencesOfString("_normal", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil) 
      let twitterPhotoUrl = NSURL(string: hiResUrlString) 
      let imageData = NSData(contentsOfURL: twitterPhotoUrl!) 

      if (screenName != nil){ 
       user.setObject(screenName!, forKey: "username") 
      } 

      if(imageData != nil) { 
       let profileFileObject = PFFile(data:imageData!) 
       user.setObject(profileFileObject, forKey: "profilePicture") 
      } 

      user.saveInBackgroundWithBlock({ (success:Bool, error:NSError?) -> Void in 
       if(success) { 
        //println("User details are now updated") 
        user.pinInBackgroundWithBlock({ (pinUserSuccess:Bool, pinUserError:NSError?) -> Void in 
         if (pinUserSuccess){ 
          println("User successfully pinned in twitter") 
         }else { 
          println("Error in pining the user") 
         } 
        }) 
       } 
      }) 
     } else { 
      println(error?.description) 
     } 
    } 
+0

Теперь мне просто нужно ответить на вопрос, как получить электронное письмо из профиля twitter –