Bonjour à tous,

J'ai créé une API pour qu'un utilisateur puisse s'authentifier depuis un site internet et depuis une application pour iOS/Android.

J'arrive à faire l'opération mais cela ne fonctionne soit
1. sur l'application web => OK. L'IOS =>KO
2. sur l'application web => KO. L'IOS =>OK

Cas 1;
Pour que mon application web fonctionne, je récupère les données ainsi
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
(isset($_POST['email']) && !empty($_POST['email']) ) ? $email = strip_tags($connect->real_escape_string($_POST['email'])) : $email = "none";
(isset($_POST['pwd']) && !empty($_POST['pwd'])) ? $pwd = strip_tags($connect->real_escape_string($_POST['pwd'])) : $pwd = "none";

mais mon application IOS/Android qui fait apelle à la meme API, n'arrive pas à récupérer $_POST['email']

Si je mets mon $_POST dans
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
echo json_encode($_POST);

Il m'affiche ceci (il semble que les \ me cause le problème. mais d'ou viennent-il?)
{"{"email":"demo@domaine_ch","pwd":"demo"}": ""}
Dans mon App IOS/ANdroid, je fais ma requete avec FtechQuery
Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
const getUser = async (email:string, pwd:string) => {
        console.log("user:", email);
        console.log("pwd:", pwd);
        setIsLoading(true)
        try {
            const response = await fetch('https://api.domaine.ch/getUser.inc.php', {
                method: 'POST',
                headers:{
                    accept: 'application/json',
                    Authorisation: 'key',
                },
                body: JSON.stringify({
                    email: email,
                    pwd: pwd
                }),
            });
 
            if(!response.ok){
                //console.log("[res]" + res)
                throw new Error('[fetchQueryUser] Failed to fetch the API (check the path)') 
            }
 
            const json = await response.json();
            console.log(json)
            setUser(json);
 
        }catch(err){
            console.error('[fetchQueryUser] Check parameters passed in body' + err);
        } finally {
            setIsLoading(false);
        }
 
    };

Cas 2:
Si maintenant dans mon API, je commente et j'ajoute ces ligne
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
		    $encodedData = file_get_contents('php://input');  // take data from react native fetch API
			$decodedData = json_decode($encodedData, true);
 
			$email = $decodedData['email'];
			$pwd = $decodedData['pwd'];
 
			/*
			(isset($_POST['email']) && !empty($_POST['email']) ) ? $email = strip_tags($connect->real_escape_string($_POST['email'])) : $email = "none";
 
			(isset($_POST['pwd']) && !empty($_POST['pwd'])) ? $pwd = strip_tags($connect->real_escape_string($_POST['pwd'])) : $pwd = "none";
			*/

Nikel chrome, mon App IOS/Android fonction, mais c'est mon application web qui bug!!!!

Mon application fait la question ainsi

Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
	// https://solutions.posit.co/connections/clients/php/#php-example
	function callApi($url, $key, $params){
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($curl, CURLOPT_HTTPHEADER, array(
		    "Authorization: Key " . $key
		));
		curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
 
		$result = curl_exec($curl);
		curl_close($curl);
 
		return json_decode($result);
	}
?>


Il y a un mode de fonctionnement dans l'envoi qui diffère, mais je n'arrive pas à voir comment.

Idéalement, si je vous me le recommander asssi, j'aimerais continuer acec

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$encodedData = file_get_contents('php://input');  // take data from react native fetch API
			$decodedData = json_decode($encodedData, true);
 
			$email = $decodedData['email'];
			$pwd = $decodedData['pwd'];


Je me demande s'il m'y a pas un problème avec le decodage de json....

Merci

Edit:
par contre je viens de voir un truc de bizard, juste avant l'envoi de ce poste : demo@domaine_ch. Je vais voir d'ou vient ce _, car j'ai bien saisi un .