Как интегрировать логин LINE в Firebase Auth - PullRequest
0 голосов
/ 28 февраля 2020

Я провел некоторые исследования и эксперименты по интеграции входа в LINE с Firebase Auth с использованием Flutter. У меня есть несколько вопросов:

  1. Похоже, в Firebase Auth есть AuthProvider, а в исходном коде Flutter я также нашел OAuthProvider. Там вы можете создать Credential, чтобы включить ваш idToken и токен доступа. Но я не знаю, как указать providerId в этом Credential. Я предполагаю, что это невозможно, потому что Firebase не интегрировал логин LINE. Api: logInWithCredential на стороне клиента может работать ТОЛЬКО с поддерживаемыми Firebase методами входа, и вы должны включить их в консоли Firebase. Я прав?

  2. Похоже, теперь мне нужно настроить собственный сервер для обмена токеном доступа LINE на пользовательский токен Firebase. На своем сервере я сначала проверяю токен доступа и получаю профиль пользователя LINE, затем я создаю собственный токен, но там мне нужно выбрать UID, который я должен использовать по некоторому шаблону, например LINE:${LINE_UID}. Это похоже на взлом, есть ли лучший способ?

  3. Администратор API для создания настраиваемого токена принимает только UID или, необязательно, утверждение пользователя, у меня нет способа установить его отображаемое имя или некоторые другие основы c информация. Поэтому, если я напрямую отправлю токен с UID, например LINE:${LINE_UID}, клиенту, то клиент logInWithToken создаст пользователя без отображаемого имени, если он не существует. Единственный обходной путь, который я могу создать, на стороне сервера - сгенерировать LINE:${LINE_UID} и найти его в Admin API, если он не существует, тогда я создаю пользователя с правильным отображаемым именем. Это выглядит снова не очень хорошо, потому что документ сказал, что если вы сделаете logInWithToken, он создаст его, если его там нет, и мы не можем его использовать, потому что я хочу установить его отображаемое имя при его создании. Есть ли лучшее решение?

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

С уважением, Сян.

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

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

Общий подход для добавления LINE в качестве поставщика аутентификации заключается в следующем. показано в этом сообщении в блоге: Аутентификация пользователей Firebase с помощью LINE Login . Существует также пример , который показывает, как использовать облачные функции в качестве компонента сервера для этого. Если вы застряли в реализации этих программ для Flutter, опубликуйте минимальный , полный / автономный код, который воспроизводит эту проблему .

  1. API на стороне клиента : logInWithCredential может работать ТОЛЬКО с поддерживаемыми Firebase методами входа, и вы должны включить их в консоли Firebase. Я прав?

Нет, вы не правы. Вы также можете предоставить своего собственного провайдера для входа в систему для Firebase и использовать токены, которые вы там пишете, с помощью Firebase Authentication SDK.

Это похоже на взлом, есть ли лучший способ?

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

У меня нет возможности установить его отображаемое имя или другую основную информацию c info [при создании учетной записи]

Это действительно распространенная проблема с некоторыми поставщиками, так как вы Например, нельзя установить отображаемое имя для провайдера электронной почты и паролей, пока после не будет создана учетная запись. Вместе с пользовательским провайдером вы можете поместить любую информацию в исходную JWT, которую вы уже хотите.

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

См. Связывание провайдера аутентификации с Firebase

0 голосов
/ 28 февраля 2020

Вы проверяли плагин firebase_auth? Он имеет множество полезных функций.

https://pub.dev/packages/firebase_auth

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...