tinder-client

NodeJS client to access the Tinder API

Usage no npm install needed!

<script type="module">
  import tinderClient from 'https://cdn.skypack.dev/tinder-client';
</script>

README

Tinder Client

Tinder Client npm npm

Introduction

Tinder has an unofficial API that has been documented by this gist and fbessez/Tinder.

There is also an existing Node Client, tinderjs. This is a Promise-based equivalent.

Dependencies

tinder-client has two dependencies:

API

Creating a client

There are two ways to create a client

  • If you have access to a user's Facebook access token, then you can use the createClientFromFacebookAccessToken factory function
  • If you have access to a user's Facebook email & password, then you can use the createClientFromFacebookLogin factory function

The returned client object will have a variety of methods that will provide access to the Tinder API.

createClientFromFacebookAccessToken

import { createClientFromFacebookAccessToken } from 'tinder-client';

const client = await createClientFromFacebookLogin('some facebook access token');

createClientFromFacebookLogin

import { createClientFromFacebookLogin } from 'tinder-client';

const client = await createClientFromFacebookLogin({
  emailAddress: 'your facebook email address',
  password: 'your facebook password',
});

getProfile

const profile = await client.getProfile();

updateProfile

import { GENDERS, GENDER_SEARCH_OPTIONS } from 'tinder-client';

const userGender = GENDERS.female;
const searchPreferences = {
  maximumAge: 100,
  minimumAge: 99,
  genderPreference: GENDER_SEARCH_OPTIONS.both,
  maximumRangeInKilometers: 100,
};
const profile = await client.updateProfile({ userGender, searchPreferences })

getRecommendations

const recommendations = await client.getRecommendations();

getUser

const user = await client.getUser('someUserId');

getMetadata

Get metadata for authenticated user

const myMetadata = await client.getMetadata();

changeLocation

await client.changeLocation({ latitude: 'someLatitude', longitude: 'someLongitude' });

like

await client.like('someUserId');

pass

await client.pass('someUserId');

superLike

await client.superLike('someUserId');

getUpdates

await client.getUpdates();
await client.getUpdates('2019-02-05T00:00:00.004Z');

messageMatch

await client.messageMatch({ matchId: 'someMatch', message: 'someMessage' });

getMatch

await client.getMatch('someMatchId');

getMessage

await client.getMessage('someMessageId');

getCommonConnections

await client.getCommonConnections('someTinderUserId');

resetTemporaryLocation

await client.resetTemporaryLocation();

temporarilyChangeLocation

await client.temporarilyChangeLocation({ latitude: 'someLatitude', longitude: 'someLongitude' });

Local Development

After cloning the repository, use nvm / npm to install dependencies.

To run both all tests, execute npm run test.

To only run unit tests, execute npm run unit-test.

To only run integration tests, execute npm run integration-test.

In order to execute local integration tests successfully, you'll need to specify the following environment variables in the .env file

  • FACEBOOK_EMAIL_ADDRESS
  • FACEBOOK_PASSWORD
  • TINDER_USER_ID (Your Tinder user id)

To build the production bundle, execute npm run build.

Git Hooks

This project uses husky to maintain git hooks.

  • pre-commit - run eslint
  • commit-msg - run commit message linting
  • pre-push - run unit tests

Commit Linting

This project uses semantic-release and commitlint (specifically the Angular commit convention) to automatically enforce semantic versioning.

Retrieving Facebook User ID and Facebook Access Token

For local development, you might want to test the client out at on an ad-hoc basis or maybe even for integration testing.

In order to do so, you'll need to get your Facebook Access Token.

To retrieve a Facebook Access Token, you'll need to

  • Go to this URL
  • Open the Network tab
  • Look for a request to /confirm

confirm-request

  • Look at the response, specifically the for.jsmods.require[3][0] value, and search the text for access_token

confirm-request-response