connection — подключение, авторизация и получение данных для веб-приложения с использованием переполнения стека

Любая помощь / совет / направление будет принята с благодарностью. Попробуйте терпеть меня, даже если этот вопрос не является конкретным.

Я работаю над веб-приложением, которое будет подключаться к уже существующему коммерческому облачному календарю, в котором будут расписания для определенного события.

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

Поток будет как

Пользователи -> нажмите кнопку «Авторизовать» -> введите учетные данные -> подключиться к системе -> получить необходимые данные -> обновить их в моем веб-приложении.

Я собираюсь нарисовать пробел, потому что я не нахожу никаких полезных ресурсов о том, как получить доступ к отдельному приложению и получить данные.
Я знаю, что мне нужно создать какой-то API для связи с этой системой, но я точно не знаю, КАК.

Извините, если я не имею смысла, но я действительно хочу некоторую помощь здесь. Существуют ли библиотеки, которые предоставляют аналогичную функциональность? Как мне вообще начать? Я использую PHP как серверный язык.

7

Решение

  1. Кнопка при нажатии -> Перенаправить на форму входа

  2. Форма входа -> Пользователь вводит учетные данные -> Отправить форму

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

  4. Вы должны подтвердить подлинность. Теперь для аутентификации у вас не может быть прямого доступа к другой базе данных сервера (непосредственно к облачной базе данных), поэтому вам нужно вызвать API соответствующей базы данных облака, для которой вы хотите пройти аутентификацию. Для этого вызова вы можете использовать вызов CURL с параметрами POST или любой необходимый HTTP-запрос, такой как GET, POST, PUT, DELETE, PATCH. Убедитесь, что вы используете вызов API на основе TOKEN. Даже вы можете пойти на любые соответственно защищенные вызовы API согласно дизайну облачной базы данных для безопасности.

БОНУС: Так что же такое API-вызов на основе токена? Всякий раз, когда вы запрашиваете вызов API для кросс-сервера, т.е. другие серверы убедитесь, что вы можете отправлять произвольный текст вместе с другими параметрами. Сервер с другой стороны, получивший ваш запрос, должен проверить этот токен из соответствующей таблицы базы данных, чтобы убедиться, что вы являетесь действительным пользователем и позволяет выполнять необходимые действия, такие как получение сведений о клиенте, получение сведений о продукте и т. Д. ,

  1. API аутентификации возвращает данные AUTHENTICATED. Исходя из этого, вы можете продолжать выполнять действия.

  2. В случае неудачной аутентификации вы можете отправить пользователю сообщение об ошибке неверных учетных данных.

  3. В случае успеха, вам будет предоставлен доступ, и теперь вы можете выполнить вставку данных в вашу базу данных.

  4. Чтобы прочитать данные из другой таблицы базы данных, поскольку у вас не будет необходимых разрешений, вы не сможете напрямую получить к ним доступ. Выполните вызов API для соответствующей функции, чтобы получить все необходимые данные, будь то GET, POST, PUT, DELETE, PATCH.

  5. Теперь подумайте, что вы хотите получить все данные таблицы CUSTOMER, тогда вам нужно будет сделать запрос GET к API, который возвращает данные JSON.

  6. Теперь вам остается только то, что вы хотите сделать с этими данными. Хотите ли вы сохранить это в соответствующей таблице базы данных или поэкспериментировать с ним на лету.

Чтобы научиться писать API

Например:

ПРИМЕЧАНИЕ. Я не добавил никаких проверок безопасности, чтобы убедиться, что вы работаете над
тот же самый

Подумайте, что ваш запрос GET, чтобы получить подробную информацию о клиентах, то вы можете сделать, как показано ниже

URL API: http://127.0.0.1/project/getCustomers.php?token=2fdsd5f42314sfd85sds
СПОСОБ ЗАПРОСА: ПОЛУЧИТЬ

getCustomers.php

<?php
include_once 'dbConnect.php'; //I am having $link as database link
//Only !isset will also work
$errors = [];
if(empty($_GET['token']) || !isset($_GET['token'])){
$errors[] = 'Token not found!';
}else{
$token = $_GET['token'];
}
//tokens table will have (id, user_id, token) coloumns
$tokenQuery = mysqli_connect($link, "SELECT * FROM tokens WHERE token = '$token' LIMIT 1");
//If I get any result with the respective token
if(mysqli_num_rows($tokenQuery) > 0){
$tokenDetails = mysqli_fetch_assoc($tokenQuery);
$userId = $tokenDetails['user_id'];
/* Now you can check whether the user has Authorization to access the particular module */
$isUserAuthorized = checkUserAuthorizationModule($userId); //Please help your self to do this all checks

if($isUserAuthorized === TRUE){
$customersQuery = mysqli_query($link, "SELECT * FROM customers");
$customersDetails = [];
if(mysqli_num_rows($customersQuery) > 0){
while($row = mysqli_fetch_assoc($customersQuery)){
$customersDetails[] = $row;
}
}

return json_encode([
'customerDetails' => $customersDetails
]);
}
}else{
$errors[] = 'Token is not valid';
}

return json_encode([
'errors' => $errors
]);
1

Другие решения

Многое зависит от доступных ресурсов на платформе. Но если у него есть PHP, вы можете реализовать службы RESTFUL, которые обмениваются данными, используя JSON в качестве ответа Channaveer Hakari, за исключением того, что, возможно, вы не будете брать данные из mySQL, но поток и технологии и протокол таковы (службы RESTFULL, данные доставляются в формате JSON). потому что он может быть использован на самых разных языках программирования).

2

Это действительно зависит от того, как облачный календарь любит взаимодействовать.

Вы можете сказать нам, что это за услуга?

Например, если он поддерживает OAuth, это может быть способом зарегистрировать ваше приложение в службе для этого пользователя, а затем разрешить вашему приложению обновлять данные в своей учетной записи. Так работает, например, Facebook, когда он запрашивает у вашего стороннего веб-сайта разрешение на просмотр ваших контактов и публикацию сообщений на вашей стене и т. Д. В наши дни это практически стандарт Интернета для вашего случая использования.

В качестве альтернативы это может быть случай, как вы сказали, захват их учетных данных и их сохранение, затем подключение к REST API календарей с этими учетными данными и внесение обновлений. Я бы сказал, что это плохой подход с точки зрения безопасности. Ни один пользователь не должен передавать свои учетные данные третьей стороне и доверять им. Это плохая идея. Это одна из причин, почему OAuth существует.

Если вы создаете небольшое приложение для небольшой компании для внутреннего использования, то может подойти только второй подход. Я оставлю это на ваше усмотрение.

2

Есть один способ сделать это …

Я собираюсь проявить творческий подход здесь:

  1. Нажмите конечную точку API на вашем сервере, введите имя пользователя и пароль.

  2. Сохраните имя пользователя и пароль в файл .txt на этом сервере.
    Имя файла TXT является отметкой времени «сейчас»

  3. На этом же сервере запустите цепочку команд USER INTERFACE, что-то вроде этого (с использованием библиотеки, такой как xdotool):

    • наведите курсор мыши на иконку Mozilla на рабочем столе,
    • дважды щелкните на Mozilla,
    • переместите мышь в адресную строку,
    • перейти на сайт календаря,
    • двигай мышью,
    • напишите имя пользователя, которое вы получили от пользователя,
    • вкладка,
    • напишите пароль, который вы получили от пользователя,
    • нажмите ввод,
    • переместите мышь в место, где вы загружаете календарь в CSV (или вы можете выбрать, и Ctrl-C копировать),
    • с помощью мыши сохраните файл в общедоступной html-директории сервера (назовите его так же, как и в txt-файле).
  4. Попросите клиентское веб-приложение постоянно проверять этот файл .txt с информацией календаря. Как только информация получена, отобразите ее на экране.

Вуаля.

1
По вопросам рекламы [email protected]