Я создал тестовый отдых API на моем локальном сервере xampp. Я выполнил некоторую задачу, такую как регистрация пользователя, пользователя входа и т. Д. Когда пользователь регистрируется, он создает api_key для зарегистрированного пользователя. Когда пользователь попытается выполнить задачу, чтобы добавить задачу в то время, когда я использовал функцию аутентификации, которая получает уникальный идентификатор пользователя на основе api_key.Как настроить заголовок авторизации для вызова rest api в android?
Вот моя функция аутентификации в PHP:
function authenticate(\Slim\Route $route){
//Getting request header
$headers=apache_request_headers();
$response=array();
$app=\Slim\Slim::getInstance();
//Verifying authorization Header
if(isset($headers['Authorization'])){
$db=new DbHandler();
//Get api key
$api_key=$headers['Authorization'];
//validating api key
if(!$db->isValidApiKey($api_key)){
//Api key is not present in users table
$response["error"]=TRUE;
$response["message"]="Access_denied! Invalid api key";
echoRespnse(401,$response);
$app->stop();
}
else{
global $student_id;
//getUser primary key id
$user=$db->getUserId($api_key);
if($user!=NULL){
$student_id=$user['id'];
}
}
}
else{
//api key is missing in header
$response["error"]=TRUE;
$response["message"]="Api key is missing";
echoRespnse(400,$response);
$api->stop();
}
}
Вот моя функция IsValidApiKey()
в php.Which проверки api_key является действительной или нет, который я вошел в заголовке, пока я прошу мой локальный сервер.
public function isValidApiKey($api_key) {
$stmt = $this->conn->prepare("SELECT id from student WHERE api_key = ?");
$stmt->bind_param("s", $api_key);
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
$stmt->close();
return $num_rows > 0;
}
Вот задачи, которые добавляют задачу в моей БД-таблице:
$app->post('/tasks','authenticate',function() use ($app){
//Check for required params
verifyRequiredParams(array('task'));
$response=array();
$task=$app->request->post('task');
global $user_id;
$db=new DbHandler();
//Creating new task
$task_id=$db->createTask($user_id,$task);
if($task_id!=NULL){
$response["error"]=FALSE;
$response["message"]="Task created successfully";
$response["task_id"]=$task_id;
}
else{
$response["error"]=TRUE;
$response["message"]="Failed to create a task. please, try again!!";
}
echoRespnse(201,$response);
});
В вышеуказанных задач я использовал мой AUTHENTICATE function.It означает, что проверить это использование api_key уже зарегистрирован или нет, и если он затем добавляет задачу в мою таблицу задач, иначе она не сгенерирует ключ api.
Вот моя таблица базы данных:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(250) DEFAULT NULL,
`email` varchar(255) NOT NULL,
`password_hash` text NOT NULL,
`api_key` varchar(32) NOT NULL,
`status` int(1) NOT NULL DEFAULT '1',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
);
Когда я выполнить эту операцию с помощью клиента Advance API надстройки один он работает, потому что я прошел api_key в это заголовок.
Ii хочу добавить задачу с помощью моего приложения для Android, как добавить заголовок api_key в заголовок, чтобы я мог добавить задачу с помощью приложения для Android?
вы используете какие-либо библиотеки для выполнения запросов в ваше приложение для Android? – droidev
только org.apache. –