【问题标题】:iOS - Swift - Parse - Twitter Profile PhotoiOS - Swift - Parse - Twitter 个人资料照片
【发布时间】:2015-09-07 18:10:31
【问题描述】:

1) 我正在尝试访问 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 用户界面通过 twitter 登录。那是有效的。我可以访问屏幕名称

4) 我正在模拟器上测试这个

问题 1 -

在上面的代码中,我收到以下代码的错误。请帮忙!

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

Error Domain=NSURLErrorDomain Code=-1012 \"操作无法完成。(NSURLErrorDomain error -1012.)\" UserInfo=0x7fd11aab87a0 {NSErrorFailingURLStringKey=https://api.twitter.com/1.1/users/show.json?screen_name=jayskapadia, NSUnderlyingError=0x7fd11aab51b0 \"操作失败(kCFErrorDomainCFNetwork 错误 -1012.)\", NSErrorFailingURLKey=https://api.twitter.com/1.1/users/show.json?screen_name=jayskapadia}

问题 2 - 我还想从 twitter 个人资料中访问电子邮件 ID。我该怎么做?

【问题讨论】:

标签: swift twitter parse-platform photo user-profile


【解决方案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)
        }
    }

【讨论】:

  • 现在我只需要回答如何从 Twitter 个人资料中获取电子邮件
猜你喜欢
  • 2015-07-07
  • 2016-01-24
  • 2015-05-07
  • 2015-05-06
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
相关资源
最近更新 更多