Давайте предположим следующую ситуацию для холста приложения:Как получить access_token в signed_request в приложении холста, если уже авторизованный пользователь нуждается в дополнительных разрешениях сейчас?
I) День 1: - Facebook приложение создано, которое нуждается в read_stream,publish_stream,offline_access
разрешения. Когда в первый раз приходит приложение , authorize
вызывает перенаправление пользователя на экран разрешения ALLOW/DENY, и когда пользователь разрешает его перенаправляет пользователя обратно на холст-адрес.
URL-адрес холста имеет access_token в подписанном запросе в запросе параметров, которые затем могут использоваться для запуска приложения.
Не требуется диалог с разрешением для того же пользователя, который приходит в приложение следующего времени, так как signed_request содержит acess_token, если у пользователя было авторизованное приложение в прошлом.
код выглядит следующим образом:
if(access_token received from signed request)
// do something with user information
else
// redirect user for authorization flow
II) День 2: - Теперь, скажем, я хочу добавить еще один разрешение в мой список, user_birthday
read_stream, publish_stream, offline_access, user_birthday` Теперь следующее логика будет иметь проблемы
if(access_token received from signed request)
// do something with user information <-- the access_token does not have new permission
else
// redirect user for authorization flow
Как это дополнительное добавление разрешения было бы решать эффективно, так как API вызовы влияют на производительность приложения? я не хотел бы использовать что-то вроде:
https://graph.facebook.com/me/permissions?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Каждый раз, когда нагрузки приложений для проверки прав доступа, относящиеся к маркеру.
UPDATE:
Sharing хороший метод: магазин разрешение установить вместе с access_token, с которым он был получен. например. Если текущие разрешения являются «basic_details-день рождения публиковать» (назовём его 1), Хранить access_token и разрешение установить в качестве
user | access_token | perm_set
Dhruv sdfsdfsdf 1
Теперь в настройках, когда вам нужно задать для нового разрешения, создать новый набор разрешений «basic_details-birthday-publish-checkins» (позволяет называть его 2),
тогда вам нужно отобразить диалог разрешений только для пользователей, у которых есть токен доступа с perm_set = 1, а не для пользователей, которые уже имеют perm_set = 2, это избавит вас от необходимости проверять access_token каждого пользователя с помощью «/ me/permissions» api.
Дхрув сказал, что он не хочет делать эту конкретную проверку. – DMCS
Похоже, именно поэтому вы также включили его в свой ответ? –
lol, Просто повторить, что это лучший способ. Как вы можете видеть, я сказал, что один из моих трех - тот, который он сказал, что он не хотел этого делать. :) – DMCS