Я нашел этот вопрос , в котором есть ответ, но Facebook изменил формат токена с тех пор, теперь это что-то вроде:
AAACEdEose0cBACgUMGMCRi9qVbqO3u7mdATQzg[more funny letters]ig8b3uss9WrhGZBYjr20rnJu263BAZDZD
Короче говоря, вы ничего не можете сделать выводот него.Я также нашел отладчик токена доступа , который показывает информацию, которую я ищу, если вы вставляете токен, что приятно, но не помогает мне сделать это программно.
ТочкаЕсли кто-то получает токен для пользователя, он может использовать его для доступа к графику, что я и делаю в своем приложении - я хочу быть уверен, что люди перенаправляют токен, выданный им моим приложением, а недругой.
Мой поток приложений:
- Получить токен доступа из Facebook (ничего особенного, как описано в здесь , Поток на стороне сервера. (тоже айфон и андроид и б / у, но у них похожие потоки если я правильно помню))[устройство] <-> [facebook]
- С этим токеном доступа устройство получит доступ к моему серверу приложений с токеном.[устройство] <-> [приложение Джонатана]На своем сервере я прикрепляю токен доступа к пользователю и использую его для предоставления разрешений этому пользователю в моем приложении.(используя Facebook Connect для аутентификации пользователей)
Мое приложение защищено, и доступ также аутентифицирован независимо от Facebook, НО!В этом потоке слабое звено, которое я обнаружил, состоит в том, что я не могу точно подтвердить подлинность того, что полученный мной токен был подписан для моего приложения - мне это не нравится, потому что я кеширую токены для автономного использования, я хочу быть уверен на 100%они для моего приложения, с моими разрешениями.
Итак, каков будет (лучший) способ аутентификации того, что полученный мной токен связан с моим приложением (для связи с пользователем я использую токен для доступа к / me и вижу, для какого пользователя этот токен)
Мне не нужно расшифровывать токен (я полагаю, что это какой-то AES), я просто ищу конечную точку, которая сообщит мне, что токен соответствует идентификатору моего приложения.
(РЕДАКТИРОВАТЬ: Использование C # SDK, если это имеет значение. Но вызов graph / rest для предоставления этой информации также хорош :))