こんにちわ。
質問内容はタイトルの通りです。
現在Social.framework
を使いTwitterのクライアントを作成しています。
そこでAPIであるmedia/upload
を用いて画像をアップロードし、states/create
で画像付ツイートを行えるよう機能追加を行っているのですが、media/upload
の部分でエラーが発生してしまいます。
以下、一部のソースとなります。
冗長なのは言うまでもありませんが、カメラのコレクションを選択後、メディアファイルに対しbase64エンコードを行ってmedia/upload
を呼び出しています。
エラーはunsupported URL
の為、base64エンコードがうまくいっていないのかもしれません。
指摘、修正点があればお願いいたします(_ _)
lang
1func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo: [String: AnyObject]) { 2 3 if didFinishPickingMediaWithInfo[UIImagePickerControllerOriginalImage] != nil { 4 5 self.mediaImage.image = didFinishPickingMediaWithInfo[UIImagePickerControllerOriginalImage] as? UIImage 6 self.imageData = UIImageJPEGRepresentation(self.mediaImage.image!, 1.0)! 7 } 8 9 picker.dismissViewControllerAnimated(true, completion: nil) 10 } 11 12 func mediaUpload(){ 13 let im: String = imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength) 14 15 let url = NSURL(string: "https://upload.twitter.com/1.1/media/upload.json?media_data=\(im)") 16 17 let request = SLRequest(forServiceType: SLServiceTypeTwitter, requestMethod: .POST, URL: url, parameters: nil) 18 request.account = twAccount 19 UIApplication.sharedApplication().networkActivityIndicatorVisible = true 20 21 request.performRequestWithHandler { (responseData, urlResponse, error) -> Void in 22 UIApplication.sharedApplication().networkActivityIndicatorVisible = false 23 24 if error != nil { 25 print("error is \(error)") 26 } 27 else { 28 do { 29 if let dic = try NSJSONSerialization.JSONObjectWithData(responseData, options: .AllowFragments) as? NSDictionary { 30 if let err = dic["errors"] as? NSArray { 31 32 let msgs = err[0] as! Dictionary<String,AnyObject> 33 let msg = msgs["message"] as! String 34 35 self.showAlert("Error", message: msg, btnText: "OK") 36 } else { 37 38 self.mediaId = dic["media_id_string"] as? String 39 40 } 41 } 42 } catch { 43 print("er") 44 } 45 } 46 } 47 48 }
追記
im
の出力の一部を記載します。
. . . gbR9s0JljtmUnB29OBn8+vtx+XFeRiHdSerbX3em1lb17eR6zqp6c3S+2/5P8LadLs5LXUDXBYAkFj/AC5 6dfbp7c8t89iUnJ36vtr8tuvnp5XN6MrySvt968mvw1d/XQwh8vG36ZyP6j+v05rhWr19N/6/r0Pdw8E7v q/K/X/Gt7vp94u49BwPQD+tYVZ8rcX07P8A4DVvL3vVHrUYqNltp33f4etl+O5A7Nzxjg8dc/j/AJ/SsIx cpXSdr3/H5ff07PRHVC1pX002Xo9tr/d9xQnaSVDFFHuc8f8A1/X/AMdGOvoG9LD0JSaVrp/Jfk1t5u610 tynLXt06231/K1tn306K9zk7/wX4ju8yx2pZWyRjJAz/wAAz+vtnvXt0KPsk7bPo1bVefu9+2nS1ve8jG0 lKMOmsnvv+Kflpf02Of8A+EB8UBz/AKEePZu3/AMj1xjr6Yr0KSaa9X+X4/h285fPYignrp+X3a+W3vdPU T/hAfFG44smOM8YP6fIfyz+fFdcN36dv16fdr5WPInQjfpK2v6f0vd13bsnKvJ4D8TqQfsRGB1w3r1OFHP b368YxXW3zRbV+nn0+V/W2nlYmOGSs9tL72/y69bvXS2jKk3hfWbVT9phK468c/y6jjkDt04y2Jt7FXvZX uuqvqmra9tHrv2TXMf6Qv8AwQKiaH/gkt+yhGwwyn47ZH1/aW+Mh9+x/wD1dKxl8T/rofOY5JYqql/c/Gn B+f5/efsPUnIFABQAUAFABQB//9k=
回答2件
あなたの回答
tips
プレビュー