Skip to main content
Limited Login is a privacy-focused authentication method introduced by Facebook for iOS apps in response to Apple’s App Tracking Transparency (ATT) requirements. It allows users to sign in with Facebook without granting tracking permissions.

What is Limited Login?

Limited Login provides a way for iOS users who have opted out of App Tracking Transparency to still use Facebook Login. Instead of receiving an Access Token, your app receives an Authentication Token (OpenID Connect token) that can verify the user’s identity but cannot access the Graph API.
Limited Login is iOS only and was introduced in facebook-ios-sdk v17.0.0. React Native FBSDK Next versions 13.0.0 and above require Limited Login support.

When Limited Login is Used

Limited Login is automatically triggered in these scenarios:
  1. User denies ATT permission - When the user opts out of tracking
  2. App doesn’t request ATT - If your app doesn’t request tracking permission
  3. iOS 14.5 and above - When ATT enforcement is active

Authentication Token vs Access Token

Implementing Limited Login

Using LoginButton

Using LoginManager

Working with Authentication Tokens

Getting the Current Token

Token Structure

An Authentication Token contains:

Server-Side Token Validation

Authentication Tokens must be validated on your server. Here’s how:

Step 1: Send Token to Server

Step 2: Validate on Server

On your server, validate the token using Facebook’s API:
See Facebook’s validation documentation for complete details.

Custom Nonce

A nonce is a unique string used to prevent replay attacks. You can provide your own:
If you don’t provide a nonce, the SDK generates a unique one automatically.

Limitations of Limited Login

Cannot Use Graph API

The biggest limitation is that Authentication Tokens cannot be used to make Graph API requests:

Limited User Data

You can only get:
  • User ID (from token validation)
  • Email (if granted and validated server-side)
  • Basic profile info (through token claims)
You cannot get:
  • Friends list
  • Photos
  • Posts
  • Detailed profile information
  • Any Graph API data

Alternative: Use Profile API

For basic user info, use the Profile API instead:
The Profile API works with both Limited Login and traditional login, but provides limited data with Limited Login.

Requesting ATT Permission

To enable traditional login, request App Tracking Transparency permission:

Add to Info.plist

Don’t forget to add the tracking description to your Info.plist:

Handling Both Login Types

Create a unified login flow that handles both token types:

Best Practices

1. Always Validate Server-Side

Never trust the authentication token on the client side alone. Always validate it on your server.

2. Handle Both Token Types

Your app should gracefully handle both Access Tokens and Authentication Tokens:

3. Inform Users About Limitations

If your app heavily relies on Graph API features, inform users when Limited Login is used:

4. Provide Alternative Authentication

Offer other login methods for users who need full functionality:
  • Email/Password login
  • Google Sign-In
  • Apple Sign In
  • Phone authentication

Testing Limited Login

To test Limited Login in development:
  1. Deny ATT permission when prompted
  2. Reset ATT permission: Settings > Privacy > Tracking > Reset
  3. Use Simulator with ATT disabled
  4. Test both flows to ensure your app handles both token types

See Also

Authentication

Learn about access tokens and authentication tokens

Login Methods

Different ways to implement Facebook Login

Authentication Token API

Complete API reference for AuthenticationToken

Profile API

Get user profile information