правильный процесс создания пользователя с GetStream.io и firebase? - PullRequest
0 голосов
/ 31 октября 2019

Я новичок в getStream.io и пытаюсь понять процесс создания пользователя с помощью getstream.io и firebase. Если я создам нового пользователя в firebase, а затем передам его UID в firebase для таких функций, как:

client = stream.connect('YOUR_API_KEY', 'API_KEY_SECRET');

//generate new user
client.user('<FIREBASE UID>').create({name: "Jane Doe", occupation: "Software Engineer", gender: 'female'});

//generate token for the user
const userToken = client.createUserToken('<FIREBASE UID>');

//Allow user to follow a feed
timeline_feed_1.follow('user', '<FIREBASE UID>');

//Check followers for the user
<FIREBASE UID>.followers({limit: '10', offset: '10'});

Будет ли это работать или я ошибаюсь?

Спасибо зачтение!

PS Я посмотрел Авторизацию пользователей и профили в getstream.io и просто хотел уточнить, что мой пример с firebase - это то, что подразумевается под «потоком», лучше всего использовать в сочетании сприложение "

Ответы [ 2 ]

1 голос
/ 13 ноября 2019

Я реализовал поток создания пользователей 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)
0 голосов
/ 01 ноября 2019

Похоже, что Stream is best used in combination with an application в ответе, на который вы ссылались, касался использования Stream API на сервере и аутентификации пользователей там, а затем после успешной аутентификации предоставлял ваш код веб-интерфейса с токеном пользователя.

Инициализирован клиент Stream APIиспользование пользовательских токенов имеет ограниченный доступ с точки зрения того, какие каналы доступны или доступны для записи.

Не рекомендуется вводить секрет API в ваш код внешнего интерфейса, поскольку это может привести к несанкционированному доступу к данным других пользователей, если кто-то их извлечет. из вашего приложения.

...