v0.2.2 2014-07-26 22:49 UTC


A(nother) PHP Foursquare API client


Composer is currently the only way to install the foursquare client into your project.

Create your composer.json file

      "require": {
          "thetwelvelabs/foursquare": "0.2.*"

Download composer into your application root

  $ curl -s | php

Install your dependencies

  $ php composer.phar install


Select your preferred HTTP Client (CurlHttpClient is the default)

  $client = new \TheTwelve\Foursquare\HttpClient\CurlHttpClient($pathToCertificateFile);

Select your preferred Redirector (HeaderRedirector is the default)

  $redirector = new \TheTwelve\Foursquare\Redirector\HeaderRedirector();

Note: The redirector is optional and is only needed if you need Foursquare authentication

Instantiate the API Gateway Factory

  $factory = new \TheTwelve\Foursquare\ApiGatewayFactory($client, $redirector);

  // Required for most requests
  $factory->setClientCredentials('CLIENT_ID', 'CLIENT_SECRET');

  // Optional (only use these if you know what you're doing)
  $factory->verifiedOn(new \DateTime());

Begin authentication with Foursquare

  $auth = $factory->getAuthenticationGateway(


Foursquare redirects the user back to you after a successful login

  $code = $_GET['code'];

  // You should do some input sanitization to $code here, just in case

  $token = $auth->authenticateUser($code);

Update the API Gateway Factory with your OAuth token


Get an instance of an endpoint gateway

  $gateway = $factory->getUsersGateway();

Get data from Foursquare

  $user = $gateway->getUser();

Search venues

  $gateway = $factory->getVenuesGateway();

  $venues = $gateway->search(array(
    'll' => '40.727198,-73.992289',
    'query' => 'Starbucks',
    'radius' => 1000,
    'intent' => 'checkin'

Working With Symfony / Silex

If you're working with Symfony or Silex, you can use the Symfony HttpClient and Redirector

  $client = new \TheTwelve\Foursquare\HttpClient\SymfonyHttpClient($pathToCertificateFile);
  $redirector = new \TheTwelve\Foursquare\Redirector\SymfonyRedirector();

If you're working with Silex, there is a Service Provider available at

Using the CurlHttpClient

If you're using the CurlHttpClient, you will probably want to include the cacert.pem file that can be found at

You can add this as a dependency in your composer file. Your composer.json might look something like this:

      "require": {
          "thetwelvelabs/foursquare": "0.2.*",
          "haxx-se/curl": "1.0.0"
      "repositories": [
              "type": "package",
              "package": {
                  "name": "haxx-se/curl",
                  "version": "1.0.0",
                  "dist": {
                      "url": "",
                      "type": "file"

You will be able to find the cacert.pem file in vendor/haxx-se/curl/cacert.pem




This library is released under the MIT License.