Facebook, Art Con, and the Social Graph

As an iOS developer – and in light of the widely publicized and ongoing Facebook/Cambridge Analytica fiasco – I thought this would be a good opportunity for me to detail how the Art Con app communicates with Facebook.

The artists and musicians who particpate in Art Con events often include Facebook Pages and Events to promote their brand. These URLs appear throughout the Art Con app. Tapping on one launches the Facebook app, if installed, allowing users to more easily follow a Page or RSVP for events.

However, before an app can do anything with Facebook, it must have the user’s permission. There are several ways to request this as a developer. The default request type is called a public_profile request (more on this in a minute). Other request types might ask for access to a friends list, page likes, or photos. Some apps may even ask to post to Facebook on your behalf (think: Instagram).

• • •

With that in mind, here’s how things work in the Art Con app:

When the user taps a Facebook URL, the device is checked to see if the Facebook app is present. If it’s not installed, the URL gets handed off to a SFSafariController. Easy enough.

To open the Page directly in Facebook, the URL must first be converted into a format the Facebook app can understand. A web address like: http://facebook.com/starsite won’t work. Sending it through the Facebook Graph API, however, returns the much more useful: fb://profile?id=162789954685. The id value being returned is part of the public_profile response.

What else is included in the public_profile reponse, you ask? Not much. Despite its name, public_profile contains nothing more than the id, name, profile image, cover image, and an age_range demographic value (like 18-34). Notably absent here is anything regarding your friends or thier data.

A public_profile request is the most benign request in the entire Facebook SDK, and the only kind we use.

• • •

If you’re an Art Con (and Facebook) user and still have questions or concerns, drop me a line.