Manage permissions
Updated: Apr 22, 2026
When a person starts a conversation with your Messenger bot, they implicitly grant the following permissions:
| Permission | Scope | Description |
|---|---|---|
user_profile | Per user, per bot. | Once granted, the developer may call the user profile API to obtain more information about the user. |
user_messaging | Per user, per bot. | Once granted, the bot may message the user personally in a user-to-bot thread. |
There may be other situations where only one (or neither) is granted, such as encountering your bot via a plugin or ad, or encountering a Page shared by a friend from a conversation on Messenger.
Requesting a Permission
The
askPermission() method of the Messenger Extensions SDK allows you to request a specific permission from the person that opened the webview. When called, a dialog asking them to grant the requested permission will be displayed.For a complete list of method parameters, see the askPermission() Reference.
MessengerExtensions.askPermission( function(permission_response) { // Person grants or rejects the asked permission. let permissions = permission_response.permissions; // list of all permissions granted let isGranted = permission_response.isGranted; if (isGranted) { // User has granted user_profile permission } }, function(errorCode, errorMessage) { // Error occurred }, "user_profile" );
The method returns the following object to the success callback after the person responds to the request:
{
"isGranted":true,
"permissions":[
"user_profile",
"user_messaging"
]
}
Note that the success callback is called regardless of whether the person granted or rejected your permission request. To determine if the permission was granted, use the
is_granted property of the response.Retrieving a List of Current Permissions
The
getGrantedPermissions() method of the Messenger Extensions SDK returns a list of permissions that are currently granted to you by the person that opened the webview.You might use this information to first display context and set expectations for a given request. It does not produce any visible UI change.
For a complete list of method parameters, see the getGrantedPermissions() Reference.
MessengerExtensions.getGrantedPermissions(function (permissions_response) { let permission = permissions_response.permissions // list of permissions granted }, function() { // An error occurred });
The method returns an array of the permissions that are currently granted to you in the
permissions property of the following object:{
"permissions":[
"user_profile",
"user_messaging"
]
}