Я пытаюсь авторизовать пользователя через 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 для существующего пользователя, как в примере выше?
- Если да, то как?
- Если нет, как я могу авторизовать пользователя через Facebook с помощью ParseСервер?В конце я хочу получить пользователя с sessionToken.