我正在开发一个Web应用程序,它将连接到预先存在的基于商业云的日历,该日历将包含特定事件的日程安排.
我将有一个授权按钮,它只是要求用户输入他们的基于云的日历的凭据.用户成功输入凭据后,我希望我的应用程序连接到基于云的应用程序的数据库并获取必要的数据.
流程就像
用户 – >点击授权按钮 – >输入凭据 – >连接到系统 – >获取必要的数据 – >在我的Web应用程序中更新它.
我正在画一个空白,因为我没有找到任何有用的资源来获取如何访问单独的应用程序和获取数据.
我知道我必须构建某种类型的API来与该系统进行通信,但我不确切知道如何.
对不起,如果我没有意义,但我真的想要一些帮助.是否有一些库提供类似的功能?我该怎么开始呢?我使用PHP作为服务器端语言.
>登录表单 – >用户输入凭证 – >提交表格
>在相应的行动页面即.您要发布数据的页面,您将拥有用户名/电子邮件和密码
>您必须进行身份验证.现在要进行身份验证,您无法直接访问其他服务器数据库(直接访问云数据库),因此您需要调用要对其进行身份验证的相应云基础数据库的API.对于此调用,您可以使用CURL调用POST参数或任何必要的HTTP请求,如GET,POST,PUT,DELETE,PATCH.确保使用基于TOKEN的API调用.即使您可以根据云数据库设计进行任何相应安全的API调用以确保安全性.
奖励:那么什么是基于令牌的API调用?每当您请求跨服务器的API调用时,即.其他服务器确保您可以将一些随机文本与其他参数一起发送.另一方面收到您的请求的服务器确保从其各自的数据库表中验证此令牌,以确保您是有效用户并允许您执行必要的操作,如获取客户详细信息,获取产品详细信息等等.
>身份验证API返回AUTHENTICATED数据.基于此,您可以继续执行操作.
>如果身份验证失败,则可以将无效凭据错误消息刷新给用户.
>如果成功,那么您将被授予访问权限,现在您可以对数据库执行插入数据.
>要从其他数据库表中读取数据,由于您没有必要的权限,因此无法直接访问它.对各自的函数进行API调用以获取所有必需的数据,无论是GET,PATCH.
>截至目前认为您想要获取表CUSTOMER的所有数据,那么您将不得不向返回JSON数据的API发出GET请求.
>现在,您可以使用此数据对其进行操作.是否要将其保存在各自的数据库表中,或者即时使用它.
要学习如何编写API
例如:
NOTE: I have not added any security check make sure you work out on
the same
认为您正在执行GET请求以获取客户的详细信息,然后您可以执行以下操作
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 ]);