首页 > 解决方案 > 在 OAuth2 中,如果一个客户端不应该共享其访问令牌,那么多个客户端如何访问同一个资源?

问题描述

我正在创建一个带有不和谐 oauth 2 登录的烧瓶后端的反应 SPA。我想知道可用于烧瓶的当前用户的不和谐用户 ID,并使用 SPA 显示有关用户的信息,例如用户名和个人资料图片。

如果我通过烧瓶设置登录页面,我可以通过查询当前用户不和谐 API 来获取有关登录用户的信息。但是如何在 SPA 中获取姓名和头像?我可以将烧瓶获得的访问令牌提供给 SPA,但不建议共享令牌。

另一种方法是隐式授权流程,其中 SPA 获取访问令牌并将其提供给烧瓶。然后 Flask 可以检查谁登录了。这还涉及 ouath2 客户端之间的令牌共享,不推荐。

我不确定如何在无需用户多次登录的情况下获取烧瓶和 SPA 的访问令牌

标签: flaskoauth-2.0authlib

解决方案


这是一个设计问题。您的 SPA 应该通过您的 Flask 后端 API 获取不和谐信息。你的 SPA 不应该直接访问 discord api,而且通常不可能直接访问第三方 api,因为 cors.

这是一个例子:

@app.route('/discord/profile')
def get_discord_profile():
    resp = oauth.get('/discord/profile/url')
    return jsonify(resp.json())

您的访问令牌始终由后端访问。


推荐阅读