Firebase: Как я могу использовать один и тот же пользовательский токен для аутентификации в разных средах (JS и iOS)?

Я пытаюсь использовать один и тот же токен (сгенерированный на стороне сервера — PHP) для аутентификации пользователя в веб-приложении (JS) и iOS-приложении (SDK). Вот шаги, которые я делаю для авторизации пользователя:

  1. сгенерировать токен JWT:

Я использую с использованием рекомендуемой библиотеки https://github.com/firebase/firebase-token-generator-php:

$generator = new TokenGenerator($firebaseSecret);
$token = $generator->setOption('expires', strtotime('+1 day'))
->setData(array('uid' => $user->id))
->create();
  1. используйте токен для авторизации пользователя через Javascript:

    ref.authWithCustomToken(token, registerHandler);
    registerHandler: function(error, authData)
    {
    if (error) {
    console.log("Login Failed!", error);
    } else {
    console.log("Login Success!");
    }
    

Все работает правильно, ПЕРВЫЙ раз, пользователь вошел в систему и готов к работе. (Сессия Firebase установлена ​​на 1 год)

Тем не мение:

  1. Если я выхожу из системы и использую тот же метод для повторной регистрации с тем же маркером, я получаю следующую ошибку: «INVALID_TOKEN: Не удалось проверить MAC.». Если я использую другой свежий токен, все снова работает.
  2. Если я отправляю токен (неиспользованный) в приложение для iOS, с которым я также работаю, я все время получаю вышеуказанную ошибку.

Может кто-нибудь поделиться некоторым светом в этой ситуации? Любая помощь будет оценена.

1

Решение

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

Будьте всегда осторожны с тем, где вы храните свои данные. Мои токены были сохранены в БД, в столбце типа varchar, но они были больше, чем 256 символов, поэтому они не были сохранены должным образом. После смены типа колонки все заработало без нареканий.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]