diff --git a/passport-facebook-token/passport-facebook-token-tests.ts b/passport-facebook-token/passport-facebook-token-tests.ts
new file mode 100644
index 000000000..531b7bdce
--- /dev/null
+++ b/passport-facebook-token/passport-facebook-token-tests.ts
@@ -0,0 +1,28 @@
+///
+import passport = require('passport');
+import facebook = require('passport-facebook-token');
+
+var User = {
+ findOrCreate(id: string, provider: string, callback: (err: any, user: any) => void): void {
+ callback(null, {username: 'ray'});
+ }
+}
+
+var options: facebook.StrategyOptions = {
+ clientID: process.env.PASSPORT_FACEBOOK_CLIENT_ID,
+ clientSecret: process.env.PASSPORT_FACEBOOK_CLIENT_SECRET
+};
+
+function verify(accessToken: string,
+ refreshToken: string,
+ profile: facebook.Profile,
+ done: (err: any, user?: any) => void) {
+ User.findOrCreate(profile.id, profile.provider, function (err, user) {
+ if (err) {
+ return done(err);
+ }
+ done(null, user);
+ });
+}
+
+passport.use(new facebook.Strategy(options, verify));
diff --git a/passport-facebook-token/passport-facebook-token-tests.ts.tscparams b/passport-facebook-token/passport-facebook-token-tests.ts.tscparams
new file mode 100644
index 000000000..5f84b9777
--- /dev/null
+++ b/passport-facebook-token/passport-facebook-token-tests.ts.tscparams
@@ -0,0 +1 @@
+--noImplicitAny --module commonjs --target es5
diff --git a/passport-facebook-token/passport-facebook-token.d.ts b/passport-facebook-token/passport-facebook-token.d.ts
new file mode 100644
index 000000000..a5aa11596
--- /dev/null
+++ b/passport-facebook-token/passport-facebook-token.d.ts
@@ -0,0 +1,38 @@
+// Type definitions for passport-facebook-token 0.4.0
+// Project: https://github.com/drudge/passport-facebook-token
+// Definitions by: Ray Martone
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module 'passport-facebook-token' {
+
+ import passport = require('passport');
+ import express = require('express');
+
+ interface Profile extends passport.Profile {
+ gender: string;
+ profileUrl: string;
+ }
+
+ interface StrategyOptions {
+ clientID: string;
+ clientSecret: string;
+ authorizationURL?: string;
+ tokenURL?: string;
+ scopeSeparator?: string;
+ passReqToCallback?: Function;
+ enableProof?: boolean;
+ profileFields?: any[];
+ }
+
+ class Strategy implements passport.Strategy {
+ constructor(options: StrategyOptions,
+ verify: (accessToken: string,
+ refreshToken: string,
+ profile: Profile,
+ done: (err: any, user?: any) => void) => void);
+ name: string;
+ authenticate: (req: express.Request, options?: any) => void;
+ }
+}