Как проверить мой доступ к Facebook? Как его обновить? (Настольное приложение .NET)

#facebook

#Facebook

Вопрос:

Я создал настольное приложение Facebook .NET. При первом запуске приложение открывает второе окно с веб-браузером, направленным на страницу авторизации для моего приложения с требуемыми разрешениями от пользователя.

Если пользователь авторизует мое приложение, Facebook перенаправляет меня на статический login_success.html и добавляет доступ к хэшу (#) части URL-адреса браузера, отображаемого в моем втором окне приложения .NET.

Я передаю этот доступ в главное окно моего приложения и выполняю свои запросы к graph api от имени соответствующего пользователя.

Это нормально, и пока работает!

Но как я могу

  • проверьте, действителен ли сохраненный мной доступ к Facebook и как
  • могу ли я продлить доступ к Facebook с истекшим сроком действия, не вызывая пользователя во втором окне браузера (конечно, при условии, что пользователь не отозвал авторизацию для моего приложения) и как
  • могу ли я распознать, что пользователь отозвал авторизацию?

Ответ №1:

  • проверьте, действителен ли сохраненный мной доступ к Facebook?

Попробуйте использовать токен против графика, и если он выдаст вам ошибку (что-то вроде OAuthException или OAuthError), это недопустимо, иначе это все еще так.

  • Могу ли я обновить доступ к Facebook с истекшим сроком действия, не вызывая пользователя во втором браузере?

Насколько мне известно, нет. Но срок действия доступа к Facebook (с разрешением автономного доступа) не истекает. Я получил доступ к одному из своих приложений почти 2 года назад, и он не изменился и срок его действия не истек, поэтому я думаю, что у вас все должно быть хорошо. Они могут стать недействительными, если изменится секрет вашего приложения или если пользователь изменит свой пароль (я почти уверен в последнем, но не на 100%)

  • Могу ли я распознать, что пользователь отозвал авторизацию?

Да, если вы запрашиваете график с помощью accessToken, который не авторизован для этой функции, это выдаст вам исключение OAuthException. Просто проверьте наличие исключений после получения данных Graph, и это позволит вам узнать, по большей части, почему вы не смогли получить данные Facebook.

Комментарии:

1. Нет способа обновить токен доступа без взаимодействия с пользователем? Что, если его приложение по какой-то причине пропустит перенаправление после авторизации (с кодом / токеном в uri)? Он исчез навсегда (хотя пользователь принял запрос авторизации)?

2. Это другое. Токен доступа привязан к сеансу. Авторизация приложения привязана к фактическому пользователю fb. Под «прослушиванием» пользователя я подразумеваю, что они должны войти в систему со своим именем пользователя и паролем, а не повторно авторизовать приложение. И если у пользователя установлен флажок «Держать меня в системе FB» (предоставляя им волшебный файл cookie FB), сеанс OAuth будет возобновлен без какого-либо взаимодействия с пользователем. Создается новый доступ к Facebook и передается обратно в ваше приложение

Ответ №2:

К сожалению, если срок действия вашего токена доступа истекает, вы должны заставить пользователя пройти Facebook, чтобы получить новый токен доступа. Токен offline_access никогда не истекает по времени, как указал joe_coolish, но он истекает, если пользователь меняет свой пароль. Итак, вашей программе необходимо распознать, когда токен доступа пользователя недействителен, и заставить пользователя «обновить его», пройдя через конечную точку oauth.

Распознавание того, что токен пользователя недействителен, — это тот же процесс, что и распознавание того, что пользователь отозвал авторизацию для вашего приложения. Всякий раз, когда вы делаете запрос graph с недопустимым токеном доступа, Facebook выдает вам исключение OAuthException, в котором говорится, что у вас нет доступа.