2016-02-13 1 views
0

Je suis un débutant avec la construction d'une api de repos et d'authentification. Je viens de lire ce qui suit et explique une configuration très simple:Laravel repos api authentification

laravel 5 rest api basic authentication

Au fond, l'article explique ne pas envoyer les noms d'utilisateur et mot de passe avec les en-têtes ou dans l'URL.

Ma question est fondamentalement: quelqu'un peut-il me donner un exemple comment utiliser une requête crl avec l'exemple ci-dessus?

Par exemple:

$service_url = 'http://example.com/api/conversations'; 
$curl = curl_init($service_url); 
$curl_post_data = array(
     'user' => '[email protected]', 
     'passw' => '1234' 
); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data); 
$curl_response = curl_exec($curl); 

curl_close($curl); 

Répondre

1

Laravel est livré avec Guzzle - une bibliothèque client HTTP avancée. Il est probablement plus raisonnable de l'utiliser qu'un CURL de bas niveau.

Pour faire auth de base avec Guzzle:

$client = new GuzzleHttp\Client(); 
$response = $client->post('http://example.com/api/conversations', [ 
    'auth' => [ 
     '[email protected]', 
     '1234' 
    ] 
]); 

La réponse sera en $ response-> getBody(); Si votre point de terminaison cible utilise le protocole SSL, il n'est pas mal d'envoyer les informations d'identification dans les en-têtes, mais plutôt d'utiliser des jetons temporaires (clé API ou jeton d'accès OAuth, par exemple).

0

En plus de la réponse acceptée, vous pouvez également créer une fonction générique pour gérer toutes vos demandes de boucle.

Vous pouvez utiliser la fonction suivante pour appeler des services Web externes et renvoyer les informations de données/d'authentification.

/*============================================= 
    * Call External Webservices using CURL 
    * 
    * @param $requestURL, $header -> (OPTIONAL) 
    * @return json 
    #=============================================*/ 
    public function curlRequest($requestURL, $headers = array()) 
    { 
    $getData = curl_init($requestURL); 
    curl_setopt($getData, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($getData, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($getData, CURLOPT_SSL_VERIFYHOST, false); 
    if (count($headers) != 0) { 
     curl_setopt($getData, CURLOPT_HTTPHEADER, $headers); 
    } 
    $response = curl_exec($getData); 
    return json_decode($response); 
    } 

Exemple d'utilisation exemple spécifique d'utiliser la fonction ci-dessus pour l'authentification:

$requestURL = 'http://www.example.com/api/userLogin'; 
$userAuthInfo = [ 
    'email'=> '[email protected]', 
    'password'=>'123456' 
]; 
$result = $this->curlRequest($requestURL, $userAuthInfo); 
dd($result); //Print the Result of the Authentication request