Получить идентификатор приложения из токена доступа пользователя (или проверить исходное приложение для токена)

Я нашел этот вопрос , на который есть ответ, но с тех пор facebook изменил формат токена, теперь это что-то вроде :

AAACEdEose0cBACgUMGMCRi9qVbqO3u7mdATQzg[more funny letters]ig8b3uss9WrhGZBYjr20rnJu263BAZDZD

Короче говоря, вы ничего не можете сделать из этого. Я также нашел отладчик токена доступа , который показывает информацию, которую я ищу, если вы вставляете токен, то есть приятно, но программно не помогает.

Дело в том, что если кто-то получает токен для пользователя, он может использовать его для доступа к графику, что я и делаю в своем приложении - я хочу быть уверенным, что люди пересылают токен, который был им выдан мое приложение, а не другое.

Мой поток приложения:

  1. Получить токен доступа из facebook (ничего особенного, как это описано в здесь , поток на стороне сервера. (Также используется iPhone и Android, но они есть похожие потоки, если я правильно помню))
    [device] [facebook]
  2. С этим токеном доступа устройство будет обращаться к моему серверу приложений с токеном
    {{1 }} [устройство] [Приложение Джонатана]
    На моем сервере я прикрепляю токен доступа к пользователю и использую его, чтобы дать ему разрешения в моем приложении. (с использованием подключения к facebook для аутентификации пользователей)


Мое приложение защищено, и выполненный доступ также аутентифицируется независимо от facebook, НО! в этом потоке слабым звеном, которое я определил, является то, что я не могу точно подтвердить, что полученный мной токен доступа был подписан для моего приложения - мне это не нравится, потому что я кэширую токены для использования в автономном режиме, я хочу быть уверен на 100% они предназначены для моего приложения с моими разрешениями.

Итак, какой (лучший) способ подтвердить, что токен, который я получил, связан с моим приложением (для связи с пользователем я использую токен для доступа / меня и просмотра, для какого пользователя этот токен предназначен)

Мне не нужно расшифровывать токен (я предполагаю, что это своего рода AES), я просто ищу конечную точку, которая сообщит мне, что токен соответствует моему идентификатору приложения.

(РЕДАКТИРОВАТЬ: используя C # SDK, если это важно ..Но вызов graph / rest для предоставления этой информации также хорош :))

59
задан Jonathan Levison 16 November 2011 в 15:17
поделиться