如何在现有用户上使用_linkWith方法?(解析服务器)



我正在尝试通过Facebook授权用户,为此我使用_linkWith方法。

我可以在新用户上使用_linkWith方法。例如,此代码工作:

//I get the data with Facebook SDK
var data = {
authData: {
id: <user_id>,
access_token: <user_access_token>
}
};
const user = new Parse.User();
user._linkWith('facebook', { authData: data.authData })
.then(user => {
//Make something with the user
})
.catch(error => console.log(error));

但我想让用户有机会先通过电子邮件和密码注册,然后通过Facebook登录,或者相反,首先通过Facebook注册,然后通过电子邮件和密码登录。但是我不能在现有用户上使用_linkWith方法。此代码不起作用:

const randomstring = require('randomstring');
//I get the data with Facebook SDK
var data = {
email: <user_email>,
authData: {
id: <user_id>,
access_token: <user_access_token>
}
};
const query = new Parse.Query(Parse.User);
query.equalTo('email', data.email);
query.first({ useMasterKey: true })
.then(async user => {
if (!user) {
user = new Parse.User();
user.set('password', randomstring.generate());
user.set('username', data.email);
user.set('email', data.email);
user = await user.signUp(null);
}
user._linkWith('facebook', { authData: data.authData })
.then(user => {
//Make something with the user
})
.catch(error => console.log(error));
})
.catch(error => console.log(error));

当我运行此代码时,出现错误"无法修改用户 8BNz8oMty7"。

我的问题:

  1. 是否可以对现有用户使用 _linkWith 方法,如上例所示?
  2. 如果是,如何?
  3. 如果没有,我如何使用解析服务器通过Facebook授权用户?最后,我想用sessionToken获得一个用户。

在最新版本的 JS SDK 和解析服务器中添加了 MasterKey/SessionToken 选项

回答你:

  1. 是的,您只能在现有用户上使用它,但请确保用户已登录其 Parse 帐户才能执行此操作。

  2. 您需要使用 linkWith 而不是 _linkWith,因为_linkWith已被折旧。 此外,您需要使用用户的 sessionToken,才能被授权编辑它,如下所示:

'

userLoggedIn.linkWith("facebook", {authData: facebookAuthData},{ sessionToken: userLoggedIn.get("sessionToken") })

您可以在此处找到完整的代码示例:https://stackoverflow.com/a/38718115/3562050

*链接与文档链接:

  • https://docs.parseplatform.org/js/guide/#linking-users
  • https://parseplatform.org/Parse-SDK-JS/api/2.9.0/Parse.User.html#linkWith

相关内容

最新更新