以编程方式为用户创建新的 Parse.Session,没有他们的密码

Create new Parse.Session programmatically for a user, without their password

我正在现有的 Parse 服务器上工作,我目前正在添加一个 OAuth 系统,以便外部应用程序可以以 Parse.User 的名义连接。

我为代码和令牌创建了不同的 类,现在我的外部应用程序可以使用 accessToken 发送请求,对应于它们的应用程序和用户(授予访问权限的人)。

我正在寻找一种方法来通知 Parse 服务器请求中的“登录用户”是授权 OAuth 应用程序的最终用户。为此,我在 Parse 服务器中间件之前创建了一个快速中间件处理请求,从请求中提取访问令牌,获取正确的用户和应用程序,然后我想以编程方式创建一个 Parse.Session,获取令牌,并在请求中将其设置为 x-parse-session-token。这样,下一个处理程序 Parse 会将请求视为已通过身份验证并由最终用户执行。

我的问题是我找不到以编程方式创建会话的方法,我知道 Parse.User.logIn,但它只适用于密码。

我试过以下方法:

const oAuthSession = await new Parse.Session().save({
  user: user // user got from Parse.Query(Parse.User) with masterKey
}, { useMasterKey: true })

但是出现 Cannot modify readonly attribute user 错误。

任何以编程方式创建没有密码的 Parse.Session 的隐藏方法?

正如@DaviMacêdo 在社区论坛中指出的那样:https://community.parseplatform.org/t/create-new-parse-session-programmatically-for-a-user-without-their-password/1751

我们可以直接在请求字段中注入用户,Parse会获取到:https://github.com/parse-community/parse-server/blob/f6a41729a7a3adc6bd5310cefb3458835b4abb58/src/middlewares.js#L199

const user = await new Parse.Query(Parse.User).get(‘idOfUser’);
req.userFromJWT = user;