GetStream.io 和 firebase 的正确用户创建流程?
proper user creation flow with GetStream.io and firebase?
我是 getStream.io 的新手,我想了解 getstream.io 和 firebase 的用户创建流程。如果我在 firebase 中创建一个新用户,然后将他们的 firebase UID 传递给函数,例如:
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'});
这行得通吗?还是我做错了?
感谢阅读!
P.S 我查看了 ,只是想澄清一下我的 firebase 示例就是 "Stream is best used in combination with an application"
的意思
您引用的答案中 Stream is best used in combination with an application
似乎是关于在服务器上使用 Stream API 并在那里对用户进行身份验证,然后在身份验证成功后为您的前端代码提供用户令牌。
Stream API 使用用户令牌初始化的客户端在哪些提要可访问或可写方面限制了访问。
不建议在您的前端代码中放置 API 秘密,因为如果有人从您的应用中提取数据,可能会导致未经授权访问其他用户的数据。
我实现了一个 Firebase + GetStream.io 用户创建流程,可以分享我所做的。
大图:创建 Firebase UID 后,您必须使用自己的后端服务器连接 Stream API 以创建新用户(使用 Firebase UID 作为 user_id)并生成该用户的 JSON Web 令牌 ("JWT")。然后您的后端服务器将此 JWT 传递给您的前端客户端(Swift iOS 在我的例子中),然后使用此 JWT 允许用户连接到 Stream API 并访问他的授权提要等。我使用 Python runtime Google Cloud Functions 和 HTTP 触发器作为我的 "backend server"。我的 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
这是一个函数,可以为您的前端客户端生成并 returns 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)
我是 getStream.io 的新手,我想了解 getstream.io 和 firebase 的用户创建流程。如果我在 firebase 中创建一个新用户,然后将他们的 firebase UID 传递给函数,例如:
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'});
这行得通吗?还是我做错了?
感谢阅读!
P.S 我查看了
您引用的答案中 Stream is best used in combination with an application
似乎是关于在服务器上使用 Stream API 并在那里对用户进行身份验证,然后在身份验证成功后为您的前端代码提供用户令牌。
Stream API 使用用户令牌初始化的客户端在哪些提要可访问或可写方面限制了访问。
不建议在您的前端代码中放置 API 秘密,因为如果有人从您的应用中提取数据,可能会导致未经授权访问其他用户的数据。
我实现了一个 Firebase + GetStream.io 用户创建流程,可以分享我所做的。
大图:创建 Firebase UID 后,您必须使用自己的后端服务器连接 Stream API 以创建新用户(使用 Firebase UID 作为 user_id)并生成该用户的 JSON Web 令牌 ("JWT")。然后您的后端服务器将此 JWT 传递给您的前端客户端(Swift iOS 在我的例子中),然后使用此 JWT 允许用户连接到 Stream API 并访问他的授权提要等。我使用 Python runtime Google Cloud Functions 和 HTTP 触发器作为我的 "backend server"。我的 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
这是一个函数,可以为您的前端客户端生成并 returns 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)