You're viewing the legacy docs. They are deprecated as of May 18, 2016.
These docs are for version 2.4.2 and below of the Javascript SDK. Go to our current docs, or see our Web migration guide.

JavaScript Web Guide

Twitter Authentication

Configuring Your Application

To get started with Twitter authentication, you need to first create a new Twitter application. Click the Create New App button at the top right of that page and fill in a name, description, and website for your application. Set the application's Callback URL to https://auth.firebase.com/v2/<YOUR-FIREBASE-APP>/auth/twitter/callback so that Twitter's OAuth service can properly communicate with the Firebase Authentication servers.

After configuring your Twitter application, head on over to the Login & Auth section in your App Dashboard. Enable Twitter authentication and then copy your Twitter application credentials (API key and API secret) into the appropriate inputs. You can find your Twitter application's key and secret at the top of the API Keys tab of the application's Twitter dashboard.

Logging Users In

If your user does not have an existing session, you can prompt the user to login and then invoke the Twitter login popup (e.g. after they have clicked a "Login" button) with the following snippet:

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.authWithOAuthPopup("twitter", function(error, authData) {
  if (error) {
    console.log("Login Failed!", error);
  } else {
    console.log("Authenticated successfully with payload:", authData);
  }
});

Alternatively, you may prompt the user to login with a full browser redirect, and Firebase will automatically restore the session when you return to the originating page:

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.authWithOAuthRedirect("twitter", function(error) {
  if (error) {
    console.log("Login Failed!", error);
  } else {
    // We'll never get here, as the page will redirect on success.
  }
});

Optional Settings

authWithOAuthPopup() and authWithOAuthRedirect() take an optional third parameter which is an object containing any of the following settings:

Name Description Type
remember If not specified - or set to default - sessions are persisted for as long as you have configured in the Login & Auth tab of your App Dashboard. To limit persistence to the lifetime of the current window, set this to sessionOnly. A value of none will not persist authentication data at all and will end authentication as soon as the page is closed. String

Here is an example of Twitter login where the session will expire upon browser shutdown:

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.authWithOAuthPopup("twitter", function(error, authData) { /* Your Code */ }, {
  remember: "sessionOnly"
});

The authData object returned to your callback contains the following fields:

authData Object
Field Description Type
uid A unique user ID, intended as the user's unique key across all providers. String
provider The authentication method used, in this case: twitter. String
token The Firebase authentication token for this session. String
auth The contents of the authentication token, which will be available as the auth variable within your Security and Firebase Rules. Object
expires A timestamp, in seconds since the UNIX epoch, indicating when the authentication token expires. Number
twitter An object containing provider-specific data. Object
twitter.id The Twitter user's ID. String
twitter.accessToken The Twitter OAuth 1.0 access token granted by Twitter during user authentication. String
twitter.accessTokenSecret The Twitter OAuth 1.0 access token secret granted by Twitter during user authentication. String
twitter.displayName The Twitter user's full name. String
twitter.username The Twitter user's screen name, handle, or alias. Twitter screen names are unique, but subject to change. String
twitter.profileImageURL The URL to the Twitter user's profile picture. String
twitter.cachedUserProfile The Twitter user's raw profile, as specified by Twitter's user documentation. Note that the data included in this payload is generated by Twitter and may be changed by them at any time. Object

Security and Firebase Rules

Now that the client is logged in, your Security and Firebase Rules have access to their verified Twitter user ID. The auth variable contains the following values:

auth Variable
Field Description Type
uid A unique user ID, intended as the user's unique key across all providers. String
provider The authentication method used, in this case: twitter. String

Here is an example of how to use the auth variable in your Security and Firebase Rules:

{
  "rules": {
    "users": {
      "$uid": {
        // grants write access to the owner of this user account whose uid must exactly match the key ($uid)
        ".write": "auth !== null && auth.uid === $uid",

        // grants read access to any user who is logged in with Twitter
        ".read": "auth !== null && auth.provider === 'twitter'"
      }
    }
  }
}
See the User Authentication and User Based Security articles for more details.
  1. 1

    Next

    Installation & Setup

  2. 2

    Next

    Understanding Data

  3. 3

    Next

    Saving Data

  4. 4

    Next

    Retrieving Data

  5. 5

    Next

    Structuring Data

  6. 6

    Next

    Understanding Security

  7. 7

    Next

    User Authentication

  8. 8

    Next

    Offline Capabilities

  9. 9

    Next

    Deploying Your App