Authentication

All v2 endpoints use two forms of authentication to best suit your use-case once your app is registered.

  • Userless Auth
  • User Auth

Userless Auth

This is used for server-side applications and others that don't intend to require a Foursquare or Swarm user's permissions.

To make a userless request, specify your consumer key's Client ID and Secret instead of an auth token in the request URL.

curl --request GET \
     --url https://api.foursquare.com/v2/venues/search?ll=40.7,-74&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&v=YYYYMMDD \
     --header 'Accept: application/json'

User Auth

This is used when you require a Foursquare or Swarm user e.g. to get all the checkins for a given user.

  • Native App Auth
  • Web App Auth

Android / iOS Apps

Native auth is the easiest way for users to connect with Foursquare. Unlike the web-based OAuth flow documented below, our native flow leverages the Foursquare app already installed on your users’ phones, saving users the hassle of re-logging in to Foursquare within your app. Native auth is the only flow that supports users logging in to Foursquare using Facebook.

To use native auth, incorporate our utility classes for iOS or Android into your app. Additional instructions are provided in the repositories' README files.

Web Applications

We use OAuth 2.0 to provide authorized access to our API. Here is a sample recommended work-flow:

Step 1
Direct users to Foursquare with your registered redirect uri.

https://foursquare.com/oauth2/authenticate
    ?client_id=YOUR_CLIENT_ID
    &response_type=code
    &redirect_uri=YOUR_REGISTERED_REDIRECT_URI

Step 2
If the user accepts, they will be redirected back to your URI with a code.

https://YOUR_REGISTERED_REDIRECT_URI/?code=CODE

Step 3
Your server should exchange the code it got in step 2 for an access token.

https://foursquare.com/oauth2/access_token
    ?client_id=YOUR_CLIENT_ID
    &client_secret=YOUR_CLIENT_SECRET
    &grant_type=authorization_code
    &redirect_uri=YOUR_REGISTERED_REDIRECT_URI
    &code=CODE

The response will be JSON.

{ "access_token": ACCESS_TOKEN }

Step 4
Once you have an access token, you can use any of the endpoints by adding oauth_token=ACCESS_TOKEN to your GET or POST request.

For example, from the command line, you can do:

curl https://api.foursquare.com/v2/users/self/checkins?oauth_token=ACCESS_TOKEN&v=YYYYMMDD