Я пишу приложение Facebook, в котором перечислены друзья пользователя, перекрестные ссылки с информацией, предоставленной пользователем о них (которая хранится в базе данных Google App Engine). Вот как работает мое приложение:Проверка пользователей Facebook на стороне сервера
После входа пользователя в Facebook, вызов API Графа осуществляется через Javascript SDK от Facebook, чтобы получить список своих друзей. Одновременно запрос AJAX отправляется моему обработчику запросов Google App Engine с идентификатором пользователя Facebook, и обработчик отправляет обратно объект JSON с информацией из базы данных о друзьях пользователя. Эти два списка затем перекрестно ссылаются на компьютер пользователя.
Очевидным недостатком безопасности в этом подходе является то, что любой может отправить запрос моему обработчику с помощью идентификатора Facebook произвольного лица, без необходимости входа в Facebook в качестве этого лица и получения всей информации, предоставленной этим человеком друзья. В конце концов, идентификаторы Facebook являются общедоступными.
Единственный способ, которым я могу думать о том, чтобы обеспечить идентификацию пользователя на стороне пользователя, не выполняя мою собственную систему входа, заключается в том, чтобы включить токен доступа пользователя в запрос AJAX, поскольку токен доступа является доказательством того, что пользователь вошли в Facebook. Обработчик запроса может затем сделать фиктивный запрос API-интерфейса Facebook, чтобы убедиться, что он действителен. Тем не менее, это кажется взломанным, и я не уверен, как справиться с возможностью истечения срока доступа маркера доступа при переходе на сервер App Engine. Я также посмотрел на Facebook Python SDK, хотя я не уверен, как это может помочь.
Как сервер App Engine может проверить, что пользователь Facebook зарегистрирован в моем приложении Facebook?