Как инициализировать SDK сервера Parse с помощью мастер-ключа [Angular 7] - PullRequest
0 голосов
/ 30 ноября 2018

Для того, чтобы выполнить конкретный запрос на сервере Parse, мне нужно использовать мастер-ключ.

Я попытался инициализировать его, но похоже, что я делаю это неправильно, потому что я все ещеесть эта ошибка: ОШИБКА Ошибка: Uncaught (в обещании): Ошибка: невозможно использовать мастер-ключ, он не был предоставлен.

Вот мой код:

Parse.initialize('myAppId', '', 'myMasterKey');  // appID, js key & master key
(Parse as any).serverURL = 'https://myServerUrl';

Возможно, проблема в том, что ключ js пуст в параметрах (мой проект использует только мастер-ключ).Любая помощь будет приветствоваться ...

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

От вашего вопроса, я предполагаю, что это на Angular на клиенте.В этом случае вы не хотите использовать мастер-ключ.Если бы я загружал вашу страницу, я мог бы получить ваш главный ключ и увидеть URL вашего сервера синтаксического анализа, и я смог бы прочитать любые данные, используя остальные API вашего сервера синтаксического анализа.Я мог бы создать или удалить любые данные, которые я хотел.

Чтобы решить эту проблему, используйте облачный код на вашем сервере.Так, например, если вы хотите разрешить «пользователю а» отправлять электронную почту «пользователю б», вы не сможете сделать это на клиенте, потому что без мастер-ключа нет способа получить «пользователя».Электронная почта b на клиенте пользователя a.

Итак, вы создаете облачную функцию sendEmail, которая принимает два параметра: идентификатор пользователя для отправки электронной почты и сообщение для отправки.Непроверенный код будет выглядеть примерно так:

const sendEmail = async function sendEmail(request) {
   const { user: sender } = request;
   const { id, message } = request.params;
   const recipient = await Parse.Query(Parse.User).get(id, { useMasterKey: true });
   console.log(recipient.get('email')); // now we have the user's email!
   ..... // code to actually send email here...
}

Parse.Cloud.define('sendEmail', sendEmail);

И затем вы можете вызывать его из внешнего интерфейса, например:

Parse.Cloud.run('sendEmail', { id: 'objectId', message: 'hi' });

Этот шаблон позволяет вам выполнять привилегированные вещи, такие как получениеэлектронная почта пользователя без раскрытия вашего главного ключа всем, кто загружает вашу страницу.

0 голосов
/ 30 ноября 2018

Мне удалось найти решение.я наконец не поставил мастер-ключ в инициализации:

Parse.initialize('myAppId', ''); // appID, js key
(Parse as any).serverURL = 'https://myServerUrl'; // use your server url
(Parse as any).masterKey = 'myMasterkey';
...