{"id":2333,"date":"2013-04-24T11:11:35","date_gmt":"2013-04-24T10:11:35","guid":{"rendered":"http:\/\/t-machine.org\/?p=2333"},"modified":"2013-04-29T17:11:23","modified_gmt":"2013-04-29T16:11:23","slug":"parse-com-install-is-broken-secretly-requires-facebook-sdk","status":"publish","type":"post","link":"http:\/\/new.t-machine.org\/index.php\/2013\/04\/24\/parse-com-install-is-broken-secretly-requires-facebook-sdk\/","title":{"rendered":"Parse.com install is broken; silently requires Facebook SDK"},"content":{"rendered":"<p>&#8230;and the last working version of <a href=\"http:\/\/parse.com\">Parse.com&#8217;s<\/a> SDK isn&#8217;t listed on their website any more.<\/p>\n<p>So &#8230; if you see this (which you probably will, on any non-trivial project):<\/p>\n<blockquote><p>\nUndefined symbols for architecture i386:<br \/>\n  &#8220;_FBTokenInformationExpirationDateKey&#8221;, referenced from:\n<\/p><\/blockquote>\n<p>&#8230;then you MUST <a href=\"http:\/\/developers.facebook.com\/ios\/\">download and install the Facebook API into your iOS \/ Xcode project<\/a>. Especially if you&#8217;re not actually using Facebook!<\/p>\n<h3>Why?<\/h3>\n<p>Parse.com for iOS is currently setup so that you CANNOT use ANY LIBRARIES AT ALL, unless you ALSO use the Facebook library. Oops.<\/p>\n<p>A little bit of naive linking by the Parse.com engineers. C-linking is a PITA to get right, so I don&#8217;t blame them.<\/p>\n<h3>More problems<\/h3>\n<p>1. Facebook won&#8217;t let you download their API \/ library any more.<\/p>\n<p>Instead you have to &#8220;install an application&#8221; on your system that spews to random places on your machine (where? Well &#8230; the app won&#8217;t tell you, but on the Facebook website they say it all goes in ~\/Documents) &#8211; and you&#8217;re not allowed to change them.<\/p>\n<p>Wrong place, wrong installer (shouldn&#8217;t be hard-coded, shouldn&#8217;t &#8220;hide&#8221; the location). And a pain to deal with, when all that was needed or wanted was a simple ZIP file&#8230;<\/p>\n<p>2. Facebook&#8217;s latest SDK requires iOS 6 to even compile it &#8211; even if you&#8217;re not using iOS 6. No-one should be hard-coding to iOS 6, though &#8211; so I&#8217;m surprised that FB is targetting it as default. iOS 5 is the main target version of iOS for now.<\/p>\n<p>3. Once you find a 6 SDK, you have to add a bunch of extra frameworks which don&#8217;t exist except on iOS 6, and set them to &#8220;Optional&#8221; in the &#8220;Project Settings &gt; Build Phases &gt; Link with Libraries&#8221; phase.<\/p>\n<p>Details are on the FB iOS Getting Started page, although they&#8217;re pretty hard to find (they&#8217;re hidden inside a drop-down with an unrelated title).<\/p>\n<p>(incidentally: the FB iOS install page has always been way too long, so I suspect someone decided to &#8220;tidy it up&#8221; by hiding 95% of it. I think a better solution would have been to remove all the cruft, and fix the install process :))<\/p>\n<p>&#8230;anyway, once you get past all that, things go smoothly. NB: when I wrote this, I was on a hack-day at Facebook&#8217;s offices, and it took <span style=\"color:red\">30 minutes<\/span> to get Parse&#8217;s API installed, because of the above problems. It would have been even longer if I&#8217;d not used Facebook in the past, and knew how to navigate their install page.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230;and the last working version of Parse.com&#8217;s SDK isn&#8217;t listed on their website any more. So &#8230; if you see this (which you probably will, on any non-trivial project): Undefined symbols for architecture i386: &#8220;_FBTokenInformationExpirationDateKey&#8221;, referenced from: &#8230;then you MUST download and install the Facebook API into your iOS \/ Xcode project. Especially if you&#8217;re [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51,20],"tags":[],"_links":{"self":[{"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/posts\/2333"}],"collection":[{"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/comments?post=2333"}],"version-history":[{"count":11,"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/posts\/2333\/revisions"}],"predecessor-version":[{"id":2346,"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/posts\/2333\/revisions\/2346"}],"wp:attachment":[{"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/media?parent=2333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/categories?post=2333"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/new.t-machine.org\/index.php\/wp-json\/wp\/v2\/tags?post=2333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}