Documentation Index Fetch the complete documentation index at: https://mintlify.com/thebergamo/react-native-fbsdk-next/llms.txt
Use this file to discover all available pages before exploring further.
The AccessToken class represents an immutable access token for using Facebook services. It provides methods to retrieve, manage, and monitor access tokens.
Import
import { AccessToken } from 'react-native-fbsdk-next' ;
Static Methods
getCurrentAccessToken
Retrieves the current access token for the application.
static getCurrentAccessToken (): Promise < AccessToken | null >
Returns
Promise<AccessToken | null> - Resolves with an AccessToken instance if a user is logged in, or null if no user is logged in.
Example
import { AccessToken } from 'react-native-fbsdk-next' ;
async function checkLoginStatus () {
const token = await AccessToken . getCurrentAccessToken ();
if ( token ) {
console . log ( 'User is logged in' );
console . log ( 'Access Token:' , token . accessToken );
console . log ( 'User ID:' , token . userID );
console . log ( 'Permissions:' , token . permissions );
} else {
console . log ( 'No user logged in' );
}
}
setCurrentAccessToken
Sets the current access token for the application.
static setCurrentAccessToken ( accessToken : AccessTokenMap ): void
Parameters
Parameter Type Description accessTokenAccessTokenMapObject containing access token data
This method is for advanced use cases only. Most apps should not need to call this directly.
Example
import { AccessToken } from 'react-native-fbsdk-next' ;
// Advanced usage - typically not needed
AccessToken . setCurrentAccessToken ({
accessToken: 'token_string' ,
applicationID: 'your_app_id' ,
userID: 'user_id' ,
permissions: [ 'public_profile' , 'email' ],
declinedPermissions: [],
expiredPermissions: [],
expirationTime: Date . now () + 60 * 60 * 1000 , // 1 hour from now
lastRefreshTime: Date . now (),
dataAccessExpirationTime: Date . now () + 90 * 24 * 60 * 60 * 1000 , // 90 days
});
refreshCurrentAccessTokenAsync
Refreshes the current access token, extending expiration date if possible.
static refreshCurrentAccessTokenAsync (): Promise < AccessTokenMap >
Returns
Promise<AccessTokenMap> - Resolves with the refreshed access token data.
Example
import { AccessToken } from 'react-native-fbsdk-next' ;
async function refreshToken () {
try {
const refreshedToken = await AccessToken . refreshCurrentAccessTokenAsync ();
console . log ( 'Token refreshed successfully' );
console . log ( 'New expiration:' , new Date ( refreshedToken . expirationTime ));
} catch ( error ) {
console . error ( 'Failed to refresh token:' , error );
}
}
// Refresh token if it's about to expire
async function checkAndRefresh () {
const token = await AccessToken . getCurrentAccessToken ();
if ( token ) {
const hoursUntilExpiry = ( token . expirationTime - Date . now ()) / ( 1000 * 60 * 60 );
if ( hoursUntilExpiry < 24 ) {
console . log ( 'Token expiring soon, refreshing...' );
await AccessToken . refreshCurrentAccessTokenAsync ();
}
}
}
addListener
Adds a listener that is called when the access token changes.
static addListener (
listener : ( accessToken : AccessToken | null ) => void
): () => void
Parameters
Parameter Type Description listener(accessToken: AccessToken | null) => voidCallback function invoked when token changes
Returns
() => void - A function that removes the listener when called.
Example
import { AccessToken } from 'react-native-fbsdk-next' ;
import { useEffect } from 'react' ;
function MyComponent () {
useEffect (() => {
// Add listener
const removeListener = AccessToken . addListener (( token ) => {
if ( token ) {
console . log ( 'Access token updated:' , token . accessToken );
console . log ( 'User ID:' , token . userID );
} else {
console . log ( 'User logged out' );
}
});
// Cleanup: remove listener when component unmounts
return () => {
removeListener ();
};
}, []);
return null ;
}
// Using in a class component
class MyComponent extends React . Component {
componentDidMount () {
this . removeTokenListener = AccessToken . addListener ( this . handleTokenChange );
}
componentWillUnmount () {
if ( this . removeTokenListener ) {
this . removeTokenListener ();
}
}
handleTokenChange = ( token ) => {
if ( token ) {
console . log ( 'Token changed:' , token . accessToken );
}
};
render () {
return null ;
}
}
Instance Properties
accessToken
The access token string.
Example
const token = await AccessToken . getCurrentAccessToken ();
console . log ( 'Token:' , token . accessToken );
// Use in API requests
const response = await fetch (
`https://graph.facebook.com/me?access_token= ${ token . accessToken } `
);
permissions
Array of permissions that have been granted.
permissions : Array < string >
Example
const token = await AccessToken . getCurrentAccessToken ();
console . log ( 'Granted permissions:' , token . permissions );
// Check for specific permission
if ( token . permissions . includes ( 'email' )) {
console . log ( 'Email permission granted' );
}
declinedPermissions
Array of permissions that have been declined by the user.
declinedPermissions : Array < string >
Example
const token = await AccessToken . getCurrentAccessToken ();
if ( token . declinedPermissions . includes ( 'user_friends' )) {
console . log ( 'User declined friends permission' );
// Maybe show UI explaining why you need it
}
expiredPermissions
Array of permissions that have expired.
expiredPermissions : Array < string >
Example
const token = await AccessToken . getCurrentAccessToken ();
if ( token . expiredPermissions . length > 0 ) {
console . log ( 'Expired permissions:' , token . expiredPermissions );
// Re-request expired permissions
await LoginManager . logInWithPermissions ( token . expiredPermissions );
}
applicationID
The Facebook App ID associated with this token.
Example
const token = await AccessToken . getCurrentAccessToken ();
console . log ( 'App ID:' , token . applicationID );
userID
The Facebook User ID associated with this token.
Example
const token = await AccessToken . getCurrentAccessToken ();
console . log ( 'User ID:' , token . userID );
// Use to fetch user data
const userData = await fetchUserData ( token . userID );
expirationTime
The expiration time of the access token (milliseconds since epoch).
Example
const token = await AccessToken . getCurrentAccessToken ();
const expiryDate = new Date ( token . expirationTime );
console . log ( 'Token expires:' , expiryDate . toLocaleString ());
// Check if expired
if ( token . expirationTime < Date . now ()) {
console . log ( 'Token has expired' );
await AccessToken . refreshCurrentAccessTokenAsync ();
}
// Check time until expiration
const hoursUntilExpiry = ( token . expirationTime - Date . now ()) / ( 1000 * 60 * 60 );
console . log ( `Token expires in ${ hoursUntilExpiry . toFixed ( 1 ) } hours` );
lastRefreshTime
The last time the token was refreshed (milliseconds since epoch).
Example
const token = await AccessToken . getCurrentAccessToken ();
const lastRefresh = new Date ( token . lastRefreshTime );
console . log ( 'Last refreshed:' , lastRefresh . toLocaleString ());
dataAccessExpirationTime
The data access expiration time (milliseconds since epoch).
dataAccessExpirationTime : number
Example
const token = await AccessToken . getCurrentAccessToken ();
const dataExpiry = new Date ( token . dataAccessExpirationTime );
console . log ( 'Data access expires:' , dataExpiry . toLocaleString ());
// Check if data access is expiring soon
const daysUntilExpiry = ( token . dataAccessExpirationTime - Date . now ()) / ( 1000 * 60 * 60 * 24 );
if ( daysUntilExpiry < 30 ) {
console . log ( 'Data access expiring soon, reauthorizing...' );
await LoginManager . reauthorizeDataAccess ();
}
accessTokenSource
The source of the access token (Android only).
accessTokenSource ?: string
Platform: Android only
Example
import { Platform } from 'react-native' ;
const token = await AccessToken . getCurrentAccessToken ();
if ( Platform . OS === 'android' && token . accessTokenSource ) {
console . log ( 'Token source:' , token . accessTokenSource );
}
Instance Methods
getExpires
Gets the expiration time of the access token.
Returns
number - Expiration time in milliseconds since epoch.
Example
const token = await AccessToken . getCurrentAccessToken ();
const expires = token . getExpires ();
console . log ( 'Expires:' , new Date ( expires ));
getPermissions
Gets the list of granted permissions.
getPermissions (): Array < string >
Returns
Array<string> - Array of granted permission strings.
Example
const token = await AccessToken . getCurrentAccessToken ();
const permissions = token . getPermissions ();
console . log ( 'Permissions:' , permissions );
getDeclinedPermissions
Gets the list of declined permissions.
getDeclinedPermissions (): Array < string >
Returns
Array<string> - Array of declined permission strings.
Example
const token = await AccessToken . getCurrentAccessToken ();
const declined = token . getDeclinedPermissions ();
if ( declined . includes ( 'email' )) {
console . log ( 'User declined email permission' );
}
getExpiredPermissions
Gets the list of expired permissions.
getExpiredPermissions (): Array < string >
Returns
Array<string> - Array of expired permission strings.
Example
const token = await AccessToken . getCurrentAccessToken ();
const expired = token . getExpiredPermissions ();
if ( expired . length > 0 ) {
console . log ( 'Expired permissions:' , expired );
}
getLastRefresh
Gets the last refresh time of the token.
Returns
number - Last refresh time in milliseconds since epoch.
Example
const token = await AccessToken . getCurrentAccessToken ();
const lastRefresh = token . getLastRefresh ();
console . log ( 'Last refreshed:' , new Date ( lastRefresh ));
getDataAccessExpiration
Gets the data access expiration time.
getDataAccessExpiration (): number
Returns
number - Data access expiration time in milliseconds since epoch.
Example
const token = await AccessToken . getCurrentAccessToken ();
const dataExpiry = token . getDataAccessExpiration ();
console . log ( 'Data expires:' , new Date ( dataExpiry ));
getApplicationId
Gets the Facebook App ID.
getApplicationId (): string
Returns
string - The Facebook App ID.
Example
const token = await AccessToken . getCurrentAccessToken ();
const appId = token . getApplicationId ();
console . log ( 'App ID:' , appId );
getUserId
Gets the Facebook User ID.
Returns
string - The Facebook User ID.
Example
const token = await AccessToken . getCurrentAccessToken ();
const userId = token . getUserId ();
console . log ( 'User ID:' , userId );
Types
AccessTokenMap
type AccessTokenMap = {
accessToken : string ;
permissions : Array < string >;
declinedPermissions : Array < string >;
expiredPermissions : Array < string >;
applicationID : string ;
userID : string ;
expirationTime : number ;
lastRefreshTime : number ;
dataAccessExpirationTime : number ;
accessTokenSource ?: string ; // Android only
}
Represents the raw access token data returned from the native SDK.
Complete Example
import React , { useState , useEffect } from 'react' ;
import { View , Text , Button , StyleSheet } from 'react-native' ;
import { AccessToken , LoginManager } from 'react-native-fbsdk-next' ;
function TokenInfo () {
const [ token , setToken ] = useState ( null );
const [ tokenInfo , setTokenInfo ] = useState ( null );
useEffect (() => {
// Check initial token
checkToken ();
// Listen for token changes
const removeListener = AccessToken . addListener (( newToken ) => {
console . log ( 'Token changed' );
setToken ( newToken );
if ( newToken ) {
updateTokenInfo ( newToken );
} else {
setTokenInfo ( null );
}
});
// Cleanup
return () => {
removeListener ();
};
}, []);
const checkToken = async () => {
const currentToken = await AccessToken . getCurrentAccessToken ();
setToken ( currentToken );
if ( currentToken ) {
updateTokenInfo ( currentToken );
}
};
const updateTokenInfo = ( accessToken ) => {
const now = Date . now ();
const expiresIn = accessToken . expirationTime - now ;
const dataExpiresIn = accessToken . dataAccessExpirationTime - now ;
setTokenInfo ({
expiresInHours: ( expiresIn / ( 1000 * 60 * 60 )). toFixed ( 1 ),
dataExpiresInDays: ( dataExpiresIn / ( 1000 * 60 * 60 * 24 )). toFixed ( 0 ),
expiryDate: new Date ( accessToken . expirationTime ),
dataExpiryDate: new Date ( accessToken . dataAccessExpirationTime ),
});
};
const handleRefresh = async () => {
try {
await AccessToken . refreshCurrentAccessTokenAsync ();
await checkToken ();
alert ( 'Token refreshed successfully' );
} catch ( error ) {
console . error ( 'Refresh failed:' , error );
alert ( 'Failed to refresh token' );
}
};
const handleReauthorize = async () => {
try {
const result = await LoginManager . reauthorizeDataAccess ();
if ( ! result . isCancelled ) {
await checkToken ();
alert ( 'Data access reauthorized' );
}
} catch ( error ) {
console . error ( 'Reauthorization failed:' , error );
}
};
if ( ! token ) {
return (
< View style = { styles . container } >
< Text > No active session </ Text >
</ View >
);
}
return (
< View style = { styles . container } >
< Text style = { styles . title } > Access Token Info </ Text >
< View style = { styles . infoSection } >
< Text style = { styles . label } > User ID: </ Text >
< Text style = { styles . value } > { token . userID } </ Text >
</ View >
< View style = { styles . infoSection } >
< Text style = { styles . label } > App ID: </ Text >
< Text style = { styles . value } > { token . applicationID } </ Text >
</ View >
< View style = { styles . infoSection } >
< Text style = { styles . label } > Permissions: </ Text >
< Text style = { styles . value } > { token . permissions . join ( ', ' ) } </ Text >
</ View >
{ token . declinedPermissions . length > 0 && (
< View style = { styles . infoSection } >
< Text style = { styles . label } > Declined: </ Text >
< Text style = { styles . value } >
{ token . declinedPermissions . join ( ', ' ) }
</ Text >
</ View >
) }
{ tokenInfo && (
<>
< View style = { styles . infoSection } >
< Text style = { styles . label } > Expires in: </ Text >
< Text style = { styles . value } > { tokenInfo . expiresInHours } hours </ Text >
</ View >
< View style = { styles . infoSection } >
< Text style = { styles . label } > Data access expires in: </ Text >
< Text style = { styles . value } > { tokenInfo . dataExpiresInDays } days </ Text >
</ View >
</>
) }
< View style = { styles . buttonContainer } >
< Button title = "Refresh Token" onPress = { handleRefresh } />
< Button title = "Reauthorize Data Access" onPress = { handleReauthorize } />
</ View >
</ View >
);
}
const styles = StyleSheet . create ({
container: {
flex: 1 ,
padding: 20 ,
backgroundColor: '#f5f5f5' ,
},
title: {
fontSize: 24 ,
fontWeight: 'bold' ,
marginBottom: 20 ,
},
infoSection: {
marginBottom: 15 ,
padding: 10 ,
backgroundColor: 'white' ,
borderRadius: 8 ,
},
label: {
fontSize: 14 ,
color: '#666' ,
marginBottom: 5 ,
},
value: {
fontSize: 16 ,
color: '#000' ,
},
buttonContainer: {
marginTop: 20 ,
gap: 10 ,
},
});
export default TokenInfo ;
See Also
Authentication Learn about Facebook authentication
LoginManager Perform login operations
AuthenticationToken iOS Limited Login authentication tokens
Graph API Make Graph API requests