Я работаю с Snapchat API, чтобы попытаться войти в приложение, используя их поток OAuth. Как только пользователь вошел в систему через Snapchat, я пытаюсь перепроектировать (поскольку у них нет документации по этому вопросу), как получить какой-то уникальный идентификатор для пользователя, чтобы я мог связать его с локальным пользователем в моей базе данных. Вот как я раньше делал это с такими вещами, как Facebook. Пользователь входит в систему и получает токен доступа через API Facebook, а я могу извлечь какой-то уникальный идентификатор для пользователя через API Facebook.
API Snapchat Snapchat позволяет вам получить доступ только к отображаемому имени пользователя и некоторому «externalId», который, я не могу гарантировать, не изменится. Поэтому я расшифровал токен JWT, который мне выдал Snapchat, и это поставило под сомнение мое понимание того, как работают токены JWT. Когда я декодировал токен в http://jwt.io,, я увидел, что полезная нагрузка была пуста, но токен работает при вызове конечной точки https://kit.snapchat.com/v1/me. Как сервер Snapchat может определить, кто я? Я всегда понимал, что JWT должен включать в себя утверждение, такое как sub
, которое идентифицирует пользователя. Сервер может затем использовать эту информацию, чтобы узнать, кто я.
В этом случае моя полезная нагрузка JWT пуста, но вышеупомянутая конечная точка все еще возвращает мои пользовательские данные. Что здесь происходит? Как сервер узнает, кто я, когда мой токен JWT имеет пустую полезную нагрузку? Для меня они должны хранить копию моего токена JWT на сервере, что кажется неправильным способом использования токенов JWT. Возможно, мое понимание ужасно неправильно. Есть мысли?