Я реализовал поток создания пользователей Firebase + GetStream.io и могу поделиться с вами тем, что я сделал.
Общая картина: после создания UID в Firebase вам нужно использовать собственный сервер для подключения к Stream APIсоздать нового пользователя (использовать UID Firebase в качестве user_id) и сгенерировать JSON Web Token этого пользователя («JWT»). Затем ваш внутренний сервер передает этот JWT вашему клиентскому клиенту (в моем случае Swift iOS), который затем использует этот JWT, чтобы позволить пользователю подключаться к Stream API и получать доступ к его авторизованным каналам и т. Д. Я использовал Python Runtime Google Cloud Functions сHTTP-триггер в качестве моего «внутреннего сервера». Мой код Swift вызвал эти функции через запрос HTTP POST.
Вот мой код Python для создания пользователя Stream, замены вашего собственного ключа API и секрета:
import stream
from flask import escape
def createStreamUser(request):
content_type = request.headers['content-type']
if content_type == 'application/json':
request_json = request.get_json(silent=True)
try:
id = request_json['id']
name = request_json['data']['name']
avatarURL = request_json['data']['avatarURL']
except:
raise ValueError("JSON is invalid, or missing a 'name' property")
client = stream.connect('YOUR_API_KEY', 'API_KEY_SECRET', location='us-east')
userInfo = client.users.add(
id,
{"name": name},
get_or_create=True,
)
return
Вот функциякоторый генерирует и возвращает JWT вашему клиентскому клиенту:
import stream
from flask import escape
def createUserToken(request):
content_type = request.headers['content-type']
if content_type == 'application/json':
request_json = request.get_json(silent=True)
try:
id = request_json['id']
name = request_json['data']['name']
except:
raise ValueError("JSON is invalid, or missing a 'name' property")
client = stream.connect('YOUR_API_KEY', 'API_KEY_SECRET', location='us-east')
user_token = client.create_user_token(id)
return(user_token)