- Permissions with Facebook Login
- Facebook Login Example
- When to ask for Permissions
- User Control
- Revoked Permissions
- Granular Permissions
- Expiration of Permissions
- Управление разрешениями в Android
- Получение дополнительных разрешений
- Получение разрешений на чтение
- Получение разрешений на публикацию
- Повторный запрос разрешений
- Проверка входа
- Управление разрешениями в Android
- Получение дополнительных разрешений
- Получение разрешений на чтение
- Получение разрешений на публикацию
- Повторный запрос разрешений
- Проверка входа
- Requesting & Revoking Permissions
- Mobile Apps
- Optimizing Permissions Requests
- Guidelines
- Publishing Permissions
- Checking Current Permissions
- Handling Missing Permissions
- Revoking Permissions
- Revoking Login
Permissions with Facebook Login
When a person logs into your app via Facebook Login you can access a subset of that person’s data stored on Facebook. Permissions are how you ask someone if you can access that data. A person’s privacy settings combined with what you ask for will determine what you can access.
Facebook Login Example
Permissions are strings that are passed along with a login request or an API call. Here are two examples of permissions:
- email — Access to a person’s primary email address.
- user_likes — Access to the list of things a person likes.
For example, if you add the login button to a web app and ask for email and user_likes via the scope parameter, a person would be prompted with this dialog when logging in for the first time:
Your app has requested a person’s email address and the things they like but that request also automatically asks for access to a person’s public profile. The full list of permissions, including defaults, is included in the Permissions Reference.
We provide similar mechanisms for iOS and Android. Links are provided for each platform later in this document.
When to ask for Permissions
Your app can ask for additional permissions at any time, even after a person logs in for the first time. For example, the user_photos permission allows your app to get a person’s published photos. It’s recommended you ask for this permission only when your app needs to show the person their published photos. When you ask for new permissions, the person using your app will be asked about those new permissions and has the ability to opt out. For more information, see Optimizing Permissions Requests.
Permissions only need to be granted once per app, i.e. permissions granted on one platform are effectively granted on all the platforms your app supports.
User Control
Facebook Login allows a person to grant only a subset of permissions that you ask for to your app, except for public profile, which is always required. This is available as a separate screen in the login dialog when you ask for permissions. Your app should handle the case where someone had declined to grant your app one of the permissions you requested.
Revoked Permissions
People can also revoke permissions granted to your app in Facebook’s interface at any time after they have logged in. It is important that your app regularly checks which permissions have been granted, especially when launching on a new platform. We provide methods for you to check what permissions are currently granted to your app.
Granular Permissions
People can grant your app permissions for Pages, Groups, and business assets they manage at the individual level. For example, someone who manages several Pages, may grant your app permission for only a particular Page or for only some of their Pages.
People choose which permissions they grant through a permission request flow. For example, if an app requests Page and Groups permission, people receive a request to grant those permissions.
If they don’t grant all the requested permisions, they can manage what sorts of permissions they grant.
They can also choose which Pages, Groups, or business assets they grant permissions for.
If someone initially grants only some of the requested permissions, they can later change which permissions they allow through the app settings page. However, if they update this to grant all permissions, they will no longer be able to use the app settings page to change the permissions they have granted.
People can manage the following permissions at the individual level:
Expiration of Permissions
If your app does not use a permission for 90 days, that permission expires. This is true even if the permission was approved through app review.
Источник
Управление разрешениями в Android
При входе в базовом режиме ваше приложение получает доступ к общедоступному профилю и электронному адресу человека. Для доступа к дополнительной информации в профиле и публикации на Facebook материалов от имени этого человека необходимо запросить дополнительные разрешения:
поля общедоступного профиля по умолчанию — доступ к основной информации профиля;
разрешения на чтение — вся прочая информация, которую кто-то добавляет в свой профиль Facebook, защищена другими разрешениями на чтение;
разрешения на запись — приложениям требуется отдельное разрешение на публикацию материалов от имени человека.
Управлять разрешениями в приложении можно несколькими способами:
отправляя запросы какому-либо пользователю на Facebook, ваше приложение должно проверить необходимые разрешения и при необходимости запросить их;
если приложение получит сообщение о том, что разрешение Facebook отсутствует, оно должно запросить это разрешение и повторить попытку;
пользователи вашего приложения могут отменять разрешения на Facebook, но эту возможность можно также интегрировать в приложение;
вы можете разрешить людям удалять базовые привилегии входа в своем приложении (для этого нужно интегрировать механизм отзыва входа).
Подробнее о различных доступных разрешениях см. в руководстве по разрешениям.
Люди не всегда готовы предоставлять разрешения на публикацию, поэтому запрашивайте их только тогда, когда человек готов опубликовать что-либо из вашего приложения (а не во время первоначального входа).
Получение дополнительных разрешений
При входе в базовом режиме ваше приложение получает доступ к общедоступному профилю и электронному адресу человека. Для доступа к дополнительной информации в профиле и публикации на Facebook материалов от имени этого человека необходимо запросить дополнительные разрешения.
В этом примере мы получаем user_status . Вы можете передать эти разрешения на кнопку LoginButton или в пользовательский интерфейс для входа и получения разрешений.
Измените код метода onCreateView() в классе MainFragment :
Получение разрешений на чтение
LoginManager — это единичный экземпляр, который использует текущий маркер доступа элемента currentAccessToken. Текущий маркер доступа будет задан после успешного входа. Для запроса дополнительных разрешений нужно просто вызвать методы logInWithPermissionName .
Методы logInWithPermissionName всегда открывают пользовательский интерфейс и уведомляют человека о том, что нужны дополнительные разрешения (если это так). Чтобы получить дополнительные разрешения, создайте запрос, используя Facebook SDK для Android:
Используйте этот способ для запроса разрешений в дополнение к уже полученным. Его можно использовать после первоначального входа.
Вы можете запрашивать многие разрешения на чтение, перечисленные в Справке по разрешениям.
Получение разрешений на публикацию
Во время входа вы можете запрашивать любое количество разрешений на чтение или публикацию. Если запрашивается более четырех разрешений, количество входов обычно существенно сокращается.
С 24 апреля 2018 г. разрешение pubish_actions удалено. Подробнее см. в журнале важных изменений. Чтобы дать пользователям приложения возможность делиться контентом на Facebook, рекомендуем использовать наши средства публикации.
Запрос разрешений на публикацию через publish_actions при входе создает второй шаг в пользовательском интерфейсе входа. Поэтому при входе следует запрашивать как можно меньше разрешений на чтение. Все дополнительные разрешения на чтение и разрешения публикацию нужно запрашивать только тогда, когда пользователь действительно нуждается в них. Сведения об оптимизации запросов разрешений см. в разделе Оптимизация разрешений.
Для запроса разрешений на публикацию в приложении можно использовать LoginManager .
Используйте этот способ для запроса разрешений в дополнение к тем, которые уже получены приложением при входе.
Повторный запрос разрешений
Люди могут давать не все разрешения, которые вы запрашиваете в дополнение к разрешениям public profile , предоставляемым во время входа.
Чтобы получить список разрешений, связанных с текущим маркером доступа, используйте следующий вызов:
Чтобы получить список отклоненных разрешений, используйте такой вызов:
Предусмотрите обработку случаев, когда человек отказывается предоставить приложению одно из запрошенных разрешений. Если вашему приложению для работы требуется одно из отклоненных разрешений, вы можете повторно запросить его с помощью LoginManager , как показано в примерах выше.
Проверка входа
Если вы реализовали вход через Facebook, приложение может дополнительно запросить у человека разрешения на доступ к некоторым его персональным данным.
Если приложение запрашивает дополнительные разрешения, кроме разрешений для полей общедоступного профиля по умолчанию и электронного адреса, специалисты Facebook могут предоставить его после предварительной проверки. Узнайте больше о том, в чем она заключается и как успешно пройти ее.
Источник
Управление разрешениями в Android
При входе в базовом режиме ваше приложение получает доступ к общедоступному профилю и электронному адресу человека. Для доступа к дополнительной информации в профиле и публикации на Facebook материалов от имени этого человека необходимо запросить дополнительные разрешения:
поля общедоступного профиля по умолчанию — доступ к основной информации профиля;
разрешения на чтение — вся прочая информация, которую кто-то добавляет в свой профиль Facebook, защищена другими разрешениями на чтение;
разрешения на запись — приложениям требуется отдельное разрешение на публикацию материалов от имени человека.
Управлять разрешениями в приложении можно несколькими способами:
отправляя запросы какому-либо пользователю на Facebook, ваше приложение должно проверить необходимые разрешения и при необходимости запросить их;
если приложение получит сообщение о том, что разрешение Facebook отсутствует, оно должно запросить это разрешение и повторить попытку;
пользователи вашего приложения могут отменять разрешения на Facebook, но эту возможность можно также интегрировать в приложение;
вы можете разрешить людям удалять базовые привилегии входа в своем приложении (для этого нужно интегрировать механизм отзыва входа).
Подробнее о различных доступных разрешениях см. в руководстве по разрешениям.
Люди не всегда готовы предоставлять разрешения на публикацию, поэтому запрашивайте их только тогда, когда человек готов опубликовать что-либо из вашего приложения (а не во время первоначального входа).
Получение дополнительных разрешений
При входе в базовом режиме ваше приложение получает доступ к общедоступному профилю и электронному адресу человека. Для доступа к дополнительной информации в профиле и публикации на Facebook материалов от имени этого человека необходимо запросить дополнительные разрешения.
В этом примере мы получаем user_status . Вы можете передать эти разрешения на кнопку LoginButton или в пользовательский интерфейс для входа и получения разрешений.
Измените код метода onCreateView() в классе MainFragment :
Получение разрешений на чтение
LoginManager — это единичный экземпляр, который использует текущий маркер доступа элемента currentAccessToken. Текущий маркер доступа будет задан после успешного входа. Для запроса дополнительных разрешений нужно просто вызвать методы logInWithPermissionName .
Методы logInWithPermissionName всегда открывают пользовательский интерфейс и уведомляют человека о том, что нужны дополнительные разрешения (если это так). Чтобы получить дополнительные разрешения, создайте запрос, используя Facebook SDK для Android:
Используйте этот способ для запроса разрешений в дополнение к уже полученным. Его можно использовать после первоначального входа.
Вы можете запрашивать многие разрешения на чтение, перечисленные в Справке по разрешениям.
Получение разрешений на публикацию
Во время входа вы можете запрашивать любое количество разрешений на чтение или публикацию. Если запрашивается более четырех разрешений, количество входов обычно существенно сокращается.
С 24 апреля 2018 г. разрешение pubish_actions удалено. Подробнее см. в журнале важных изменений. Чтобы дать пользователям приложения возможность делиться контентом на Facebook, рекомендуем использовать наши средства публикации.
Запрос разрешений на публикацию через publish_actions при входе создает второй шаг в пользовательском интерфейсе входа. Поэтому при входе следует запрашивать как можно меньше разрешений на чтение. Все дополнительные разрешения на чтение и разрешения публикацию нужно запрашивать только тогда, когда пользователь действительно нуждается в них. Сведения об оптимизации запросов разрешений см. в разделе Оптимизация разрешений.
Для запроса разрешений на публикацию в приложении можно использовать LoginManager .
Используйте этот способ для запроса разрешений в дополнение к тем, которые уже получены приложением при входе.
Повторный запрос разрешений
Люди могут давать не все разрешения, которые вы запрашиваете в дополнение к разрешениям public profile , предоставляемым во время входа.
Чтобы получить список разрешений, связанных с текущим маркером доступа, используйте следующий вызов:
Чтобы получить список отклоненных разрешений, используйте такой вызов:
Предусмотрите обработку случаев, когда человек отказывается предоставить приложению одно из запрошенных разрешений. Если вашему приложению для работы требуется одно из отклоненных разрешений, вы можете повторно запросить его с помощью LoginManager , как показано в примерах выше.
Проверка входа
Если вы реализовали вход через Facebook, приложение может дополнительно запросить у человека разрешения на доступ к некоторым его персональным данным.
Если приложение запрашивает дополнительные разрешения, кроме разрешений для полей общедоступного профиля по умолчанию и электронного адреса, специалисты Facebook могут предоставить его после предварительной проверки. Узнайте больше о том, в чем она заключается и как успешно пройти ее.
Источник
Requesting & Revoking Permissions
Each type of login flow has its own method of requesting permissions, depending on your platform and how you choose to integrate Facebook Login:
- The Facebook JavaScript SDK uses a scope option with the FB.login function call.
- The Login Button uses a scope or data-scope parameter on the fb:login-button element.
- A Manually Built Login Flow should add the scope parameter to the login dialog URL that they redirect to.
Mobile Apps
- Android Login can use a number of different classes to request and manage permissions. Please see our login tutorial for Android for more information.
- iOS Login can use a number of different methods to request permissions. Please see our login tutorial for iOS for more information.
- Windows Phone uses the scope parameter when launching the URI association.
Please note that many of the APIs listed above can also be used to ask for additional permissions later during an app’s lifetime, not just at initial login.
Optimizing Permissions Requests
As a general rule, the more permissions an app requests, the less likely it is that people will use Facebook to log into your app. In fact, our research shows that apps that ask for more than four permissions experience a significant drop off in the number of completed logins.
Guidelines
Here are a few guidelines to use when asking for permissions, both during and after login:
Only ask for the permissions that are essential to an app.
Ask for permission in the context in which they are required. For example, if your app wants to show places of interest near a person’s location, asking for user_location just prior to displaying that information gives the person a greater understanding of why the permission is being requested.
Separate the request of read and publish permissions. For more details, see below.
Never ask for permissions you think you might need in the future. People will be suspicious and may reject your app.
Tell people ahead of time why you are requesting a permission. Explaining why you need access to something will increase the chance that they are willing to share it.
Publishing Permissions
Apps should separate the request of read and publish permissions. Plan your app around requesting the bare minimum of read permissions at initial login and then any publish permissions when a person actually needs them, for example when they want to create an Open Graph story from within the app. This provides the best user experience and optimizes conversion.
You may receive Developer Alerts if your app requests read and publish permissions back-to-back. To stop receiving these alerts, separate your requests or follow the guidelines below for exceptional cases.
In the rare case your app requires publishing permissions up front (for example, an app that does nothing but publish a person’s mood to Facebook) only request the bare minimum read permissions at initial login. After the person logs in, show the person a screen explaining why your app needs publishing permissions and let the person opt-in to the publishing permission request by clicking a button. This will provide them with more context and improve your conversion.
One instance where you may have to request read and write permissions back-to-back is the first time that you’re associating an email-based account with a person’s Facebook account. This is usually done when someone wants to share a story on their Facebook Timeline. When your app creates the login dialog, the person will see two dialogs in a row — one to connect their account to your app and another asking for publish permissions. For this case, make sure that the only read permissions you request are public_profile. This provides the best user experience because the user wants to publish from your app and is often not interested in providing additional read permissions. It will also improve your conversion.
Checking Current Permissions
Facebook offers people full control over the permissions they grant to an app. That control extends beyond the point at which they see the login dialog. They can choose not to grant certain permissions during the login process. They can also revoke permissions in their Facebook privacy settings at any time. Apps should check for the validity of permissions before attempting to perform an API call where they are required. For example, checking that email is still granted before sending a message.
For web apps, we provide a graph API endpoint to retrieve a list of granted permissions:
The call must be made with either a user access token or your app access token. The call will return a JSON string containing the permission names which have been granted to the app and their status:
We also provide methods in the iOS and Android SDKs that provide platform-friendly representations of the permissions your app has been granted.
Handling Missing Permissions
When an app requests permissions, people may completely deny those permissions, not fully grant those permissions, or change them later. In order to provide a great experience, apps should be built to handle these situations.
First, apps should be able to handle any permissions that were requested but not granted:
- Check granted permissions before trying to use APIs that require them.
- Detect permissions errors returned when an API request is made without the correct permission. This is an example error:
Once an app has detected that someone has denied some or all permissions, it may pass them back through the login flow once and request any required permissions. However, this is a poor experience and should be avoided if possible. If someone is actively choosing not to grant a specific permission to an app they are unlikely to change their mind, even in the face of continued prompting. Instead, do the following:
If a person declines the login dialog have a clear and upfront explanation about why you are requesting each permission. Then let them click or tap to opt back in to the permission request dialog. Do not immediately redirect them into a permission request dialog without an explanation.
If someone has declined a permission for your app, the login dialog won’t let your app re-request the permission unless you pass auth_type=rerequest along with your request.
For cases where someone has granted some permissions but not others, only prompt for missing permissions at the point at which they are needed. For example, if your app sends order confirmations to users’ email, only request email when they make an order.
Unless the permissions you are requesting in the login dialog are critical to the functionality of your app and a feature doesn’t work without them, let people continue using your app without the permissions.
You may receive Developer Alerts if your app repeatedly directs users to permissions dialogs after they deny permissions. To stop receiving these alerts, follow these guidelines.
Revoking Permissions
Apps can let people revoke permissions that were previously granted. For example, your app could have a settings page that lets someone disable sending them email messages. That settings page could also revoke the email permission at the same time.
You can revoke a specific permission by making a call to a Graph API endpoint:
This request must be made with a user access token or an app access token for the current app. If the request is successful, you will receive a response of true .
Revoking Login
You can also let people completely de-authorize an app, or revoke login, by making a call to this Graph API endpoint:
This request must be made with a valid user access token or an app access token for the current app. If the request is successful, your app receives a response of true . If the call is successful, any user access token for the person will be invalidated and they will have to log in again. Because you’re de-authorizing your app, they will also have to grant access to your app as if they were logging in for the first time.
Источник