我正在尝试通过 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”。
我的问题:
- 是否可以像上面的示例一样对现有用户使用 _linkWith 方法?
- 如果是,如何?
- 如果没有,我如何使用 Parse Server 通过 facebook 授权用户?最后,我想得到一个带有 sessionToken 的用户。