(EDITED for clarification)
In a nutshell we're trying to allow users to create Foursquare venues in our app but we're having problems.
Detailed problem description:
We're developing an iOS app where our users can create events.
Users register and login with Facebook.
When a user wants to select location for their event they do a text search using Foursquare's API. (Just like when you add a location to your Instagram photo for
example if you're familiar with this).
If the venue exists the user will see it in the list and select it and all is fine.
If however the venue doesn't already exist in Foursquare we've found no way to add it. Compare to Instagram where you
get the option of adding the location directly in-app through
Foursquare's API if the search turns up empty.
Thanks user rckoenes for the API link. We're interpreting the API as it is OK to list venues with "userless access" but in order to make a POST the API "Requires Acting User".
Somehow Instagram seems to manage to allow this without forcing the user to authenticate to Foursquare but we don't see how and we want to avoid having to have this authentication in the app settings(asking them to do this with Facebook is asking enough).
Foursquare API link: https://developer.foursquare.com/overview/auth
I hope this clears things up.
Original post:
If our user can't find the right venue in our app (location search powered by foursquare) how can they create it?
This is possible within Instagram but we haven't found how to replicate it.
Is it possible?
We're developing for iOS.
Thankful for any helpful comments :)
Great question. To answer "how to add venues?", rckoenes was indeed correct when he suggested the venues/add endpoint, but you're right to note that this isn't possible unless there's an actively logged in user.
Just to clarify though, Instagram does not add venues to Foursquare when they allow their users to "Create a custom location." When an Instagram user does this, a "text tag" is associated with their photo and this never gets added to Foursquare, nor is it even searchable on Instagram again (the user would have to re-create it every time they want to use this location). Instagram's UI subtly differentiates this by coloring Foursquare venues as blue and allowing users to see more details on the venue while graying out non-Foursquare venues. The reason that these text tags aren't able to be searched again is that doing so would effectively create your own independent location database, which is a violation of our usage policies.
You can consider Instagram's approach if it's appropriate for your situation, but of course the best solution is to allow your users to authenticate through Foursquare, saving their access tokens, and make venue/add requests on behalf of users themselves. This has recently gotten much easier since the release of Foursquare native auth for iOS.
Related
On youtube.com, we can easily switch between channels by clicking on the user picture on the top right of the screen, then 'Switch Account'.
I would like to have a similar functionality in my app. I already made it possible to connect using any account (brand or normal), however I need for one login to retrieve data (login informations, profile picture, etc) about all brand channels.
I can of course ask the user to connect multiple time, and then store the informations that I need, but I would like to avoid that.
Is it possible to do that?
Edited:
I don't have any code for the moment, but by looking at the youtube api I'm not able to find any way to do this. The ideal should be to have something similar to the /{user-id}/accounts of Facebook's Graph API https://developers.facebook.com/tools/explorer/?method=GET&path=me%2Faccounts&version=v3.1 which allow to see all pages accounts – Raphael just now edit
I made a follow/following button so I need to know if the user A is already following the user B.
I know I can get all his/her friends with GET friends/ids but I'd like to know if there is a shorter way (without looping on the whole list, with cursors, etc.).
(Additional info: I'm using the iOS SDK)
Twitter API has a dedicated endpoint for this situation: friendships/show
The answer will give you all the information about the relationship between these two users, you just need to specify their screenname or user_id.
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.
For my site, I'm using Omniauth for Facebook authentication, and use Koala to access some misc. data about users.
The site hosts user generated content that's pretty visual, and I used to just use Facebook like button to let people share their content preview to Facebook. However I realized that, due to the nature of the type of content, it's better to post the preview as a photo on their albums (and this is what users want).
However, I don't want to scare away people who just want to try out the service by suggesting them with the permission request to post photos to their timeline when they sign up. Ideally I would want to start out with a default permission with no extended permissions, but let users opt in when they want to share for the first time.
How can I do this? I have read both Omniauth's and Koala's documentations but couldn't find one that describes this particular situation.
I need to know as to how to implement oAuth in an iphone application.
I have already gone through lot many posts but none of them shows as to How to retrieve tweets from a user profile (like we access facebook wallposts). I tried using an example named bengottlieb/Twitter-OAuth-iPhone but all it does is show the Login prompt and posts a sample Twit at my Twitter profile.
I need to make an application where
the user can view twits for a particular page (same as accessing the wall post for a Page)
Post tweets that will appear on his profile or if possible then also at the profile page for given ID
I was able to fetch the tweets for a particular id using http://search.twitter.com/search.json?ID but may be due to closing of Basic authentication it does not return to me tweets older than a specific time period.
The Twitter search API is not meant to retrieve the tweets from one particular user, even though it does seem to work (up to a certain point back in time). As far as I know the search API does not need authentication, so you're not in trouble regarding the deprecation of Basic authentication there.
To retrieve the tweets for a user, you need to retrieve their timeline. Be sure to use OAuth authentication, as indeed Basic authentication no longer works now.
Check out http://dev.twitter.com/ for more information. The API is documented quite well. You mention basic authentication, so perhaps you could start with http://dev.twitter.com/pages/basic_to_oauth to get you going?