function Strategy(options, verify) {
  options = options || {};
  options.requestTokenURL = options.requestTokenURL || 'https://api.twitter.com/oauth/request_token';
  options.accessTokenURL = options.accessTokenURL || 'https://api.twitter.com/oauth/access_token';
  options.userAuthorizationURL = options.userAuthorizationURL || 'https://api.twitter.com/oauth/authenticate';
  options.sessionKey = options.sessionKey || 'oauth:twitter';
  
  OAuthStrategy.call(this, options, verify);
  this.name = 'twitter';
  this._userProfileURL = options.userProfileURL || 'https://api.twitter.com/1.1/account/verify_credentials.json';
  this._skipExtendedUserProfile = (options.skipExtendedUserProfile !== undefined) ? options.skipExtendedUserProfile : false;
  this._includeEmail = (options.includeEmail !== undefined) ? options.includeEmail : false;
  this._includeStatus = (options.includeStatus !== undefined) ? options.includeStatus : true;
  this._includeEntities = (options.includeEntities !== undefined) ? options.includeEntities : true;
}
`Strategy` constructor.

The Twitter authentication strategy authenticates requests by delegating to
Twitter using the OAuth protocol.

Applications must supply a `verify` callback which accepts a `token`,
`tokenSecret` and service-specific `profile`, and then calls the `cb`
callback supplying a `user`, which should be set to `false` if the
credentials are not valid.  If an exception occured, `err` should be set.

Options:
  - `consumerKey`     identifies client to Twitter
  - `consumerSecret`  secret used to establish ownership of the consumer key
  - `callbackURL`     URL to which Twitter will redirect the user after obtaining authorization

Examples:

    passport.use(new TwitterStrategy({
        consumerKey: '123-456-789',
        consumerSecret: 'shhh-its-a-secret'
        callbackURL: 'https://www.example.net/auth/twitter/callback'
      },
      function(token, tokenSecret, profile, cb) {
        User.findOrCreate(..., function (err, user) {
          cb(err, user);
        });
      }
    ));

@constructor
@param {object} options
@param {function} verify
@access public