How To Post Link To Friends Wall Using The Facebook IOS SDK? - ios

I am looking for some advice on the best approach to achieve posting to a users wall from either the IOS App or my server.
Background
My app is currently available and incorporates the Facebook SDK. At the minute there is a custom social network in the app where users can join via Facebook Connect and share their edited photos. The user in the app uploads their photos to my server and then the app will fetch them for other users to see i.e. (latest, categories) etc.
I am looking at creating a web based viewing platform, think instagram where the users can also see their photos.
Goal
At the point of upload from the app I want to be able to post to the users friends on Facebook with a link to the web based image. I am unsure whether or not to send the notification from the app or post it from the server.
Can someone point out what it is that I need to do to achieve the above? I would imagine that I need to ask for extended permissions and then post an open graph notice. Is this correct?

Related

How to access info in a users app through your app in Obj-C?

How would you pull info from another app on the users phone. For example if I wanted to take all the emails a user has on their google inbox app or all the transactions from the users chase app and display them, how would I do that?
I understand first you'd need the user to sign in to their app Im sure I can manage how to figure out that. But how would I pull their data to my app and display it?
You would have to use an API for the app you are trying to pull information from. Google offers an API for Gmail and it is possible to access bank information through an API (see Is there an API to get bank transaction and bank balance?).
Although, if you are developing two apps on the same team you can use Keychain Sharing and App Groups to share data between your own apps.

Post pictures and tagged friends to facebook through ios app

I find it disturbing that its very easy to pick friends with friendPicker (FacebookSDK) and post pictures is extremely easy with IOS 6.0 social framework but to post the two combined seems very difficult.
I'm looking into the Facebook Open Graph API - https://developers.facebook.com/docs/opengraph/getting-started/
It seems very difficult in comparison since it requires application server etc. Its however the only solution I have found so far.
Is the use of the Open Graph API the way to go, to post a picture with tagged friends to facebook wall, or is there anything in the IOS Social Framework that can accomplish this?
With the Facebook Object API, you no longer need to set up a server in order to host Open Graph objects. You can directly create/add them to Facebook.
https://developers.facebook.com/docs/opengraph/using-object-api/
You can also use the native Share Dialog (in versions 3.5+ of the SDK) to share Open Graph stories with photos and user tagging embedded. See the Scrumptious app on how to create a story with photos and tags and publishing either via Open Graph directly, or using the native Share Dialog.

Facebook SDK iOS invite user without FBWebDialogs

I want to get list of my friends from Facebook who are not users of my app, and be able to invite them.
Using FBWebDialogs I can pick users, but I'm wondering how foursquare did it?
Screenshot:
There is option of frictionless requests.
On Facebook developer site they mentioned in section of Invites and Requests
We touched on a scenario where users exchange requests back and forth. If this scenario is typical in your game, it can be a bad user experience to force them through the request dialog every time they want to send a request. The solution for this is frictionless requests.
Frictionless requests let users send requests to friends from an app without having to click on a pop-up confirmation dialog. When sending a request to a friend, a user can authorize the app to send subsequent requests to the same friend without another dialog. This streamlines the process of sharing with friends.
For more reference see Facebook Invites and Requests
You are asking two questions here:
How to invite Facebook friends without web dialogs?
Unfortunately, the web dialogs you are referring to are the best way to send invites to friends. There was a time when we had to resort to ugly hacks just to get this functionality in applications. Facebook added this functionality to iOS SDK after developers created bug reports and were literally behind them.
Get a list of friends who are not using the app and invite them
Foursquare IMO is not using the requests API. What they do is, whenever somebody links their Facebook account to their Foursquare account they make a note of the users friends who are using/not using the app. This is possible if the user grants the app permissions.
Then in the invite screen, they simply build a UITableView with list of friends who they think are not using the app. When you tap Invite they will just send an email invitation and not the Facebook request you are referring to.
I think FourSquare syncing the user's friend list(friend ids) to its own server.. Then after they are checking it to create the custom interface like the screen shot you shared.
Maybe I didn't get the question right, but from what I know after you tap the invite button on Foursquare the Facebook invite dialog (apprequest) will pop up.
In general this dialog will let you select friends if you didn't specify any friends ids before presenting it, or show you the selected friends like in Foursquare example.
There is an API to get your FB friends, so it's possible for your server to check witch of then already has the app...
I've been researching this for a while and the main solution I have found is frictionless requests, as Rahul Patel noted. You can do a direct request to the graph API and see who has your app installed.
From there you could fairly easily implement any sort of filtering. For example, using the Friend Picker UI Control and implementing the method friendPickerViewController:shouldIncludeUser: and checking against a list of facebook ids who are not on the app that you cache somewhere else in your application and actively update it (for example in a simple core data model that is updated when appDidFinishLaunching), returning no if the user is not displayed. This would only allow users to select individuals who are not on the app, and then you could send a request to them under the hood with frictionless requests.
I do think that it is not a great idea to spam people, however, without at least allowing them to check the names of their friends, or see who they are.

How to implement auto publish to user's facebook timeline just like Instagram?

I am building a social app that user can post into my app. Data stores in our own server and display to iOS native app. I am trying to make the post that user publish to our app to user's facebook timeline. I know that I can post data to my server and then let my app use graph api to publish data directly to facebook timeline. But that will be double post and make the transfer data double which I think might not be a good practise.
So I want to post it to my server first and let server do the rest. Just like shown in facebook docuement
"Auth on Client, API Calls from Server"
https://developers.facebook.com/docs/facebook-login/access-tokens/
But I wonder if this is the case for my app. Because as shown in the diagram "API calls are forwarded to server as a proxy for Facebook API calls" . And this is not the case for my app. Because the API calls will be initiated in the server side when the user use client to post new data.
I wonder how most app implement this.For example ,app such as Instagram and other social app. I am not sure if I do just as I explain will violate any facebook term of usage .
TIA,
Kong
your case perfectly suits the model in the chart.
You said "I am trying to make the post that user publish to our app to user's facebook timeline". I'm assuming you are attempting to mimic instagram since you mentioned it. Let's say user A 'logged-in-by-facebook' on your app and made a post within your app, the app posted to your server (and push back to other users of your Android/iPhone app so they can see, right?). At this time, there's nothing to post to the user's timeline, the scope is in your app only. If the user chooses to post to his Facebook timeline, you take that very same post (which is now saved on your server) and made the call to Graph API and post there, so his friends on FB just see the FB version, not the one within your app.

Retrieve facebook data in backend service

I'm currently working on an app (iOS 6) where the user will be signing in using their facebook account.
In regards to this I have a few questions:
a) Since the app asks the user for permission to access cetain data (like: basic profile info, friend list, access to post to wall etc), I assume that the app based on it's app id will be somehow authenticated to access this information as long as the user doesn't restrict access through their facebook account.
b) will it be possible for example via a service application to authenticate with the same app id as the mobile app, and hence be able to collect data from the facebook users who authenticated with the app?
The purpose of my question is, that I would like do some analysis on the users using the iphone app, but I don't want the app to first download the information from facebook, and then pass it on to my service for analysis.
If the above is possible, could anyone please guide me in the direction of what it is that I need to do? Perhaps links to tutorials that describes this setup, og simply tell me the right facebook terminology that I'm looking for to achive this.
Thanks in advance!
It's a bit late and you may have already picked a service. I have been using Parse.com
(tutorial site). They're very good. They have SDKs and sample code for many platforms a RESTful service for others.
They have recently been acquired by FaceBook, and already have strong links to Facebook's SDK.

Resources