Hallo,
ich habe zwei Symfony Applikationen, App1, eine "öffentliche" API, ist nach außen hin offen, App2 benötigt einen eingeloggten Benutzer. Dadurch, dass beides separate Apps sind, kann ich nicht von App1 direkt auf App2 zugreifen, weshalb ich dies per cURL machen möchte.
Als API call (also nicht im Browser) wird in App1 eine Action "updateUserDetails" zum Einloggen eines Benutzers aufgerufen, um dann im Anschluss per cURL in App2 eine Action "updateUser". Da ich für App2 einen eingeloggten Benutzer brauche, muss ich diesem cURL-Request die Cookies des Logins mitgeben. Allerdings bekomme ich das nicht hin, sondern erhalte stattdessen immer die Rückmeldung "Benutzer nicht eingeloggt" von App2 als Antwort.
Ich habe schon diverse Lösungen ausprobiert, die ich im Netz gefunden habe, allerdings hat keine funktioniert.
Könt ihr mir da bitte weiterhelfen?
Danke!
ich habe zwei Symfony Applikationen, App1, eine "öffentliche" API, ist nach außen hin offen, App2 benötigt einen eingeloggten Benutzer. Dadurch, dass beides separate Apps sind, kann ich nicht von App1 direkt auf App2 zugreifen, weshalb ich dies per cURL machen möchte.
Als API call (also nicht im Browser) wird in App1 eine Action "updateUserDetails" zum Einloggen eines Benutzers aufgerufen, um dann im Anschluss per cURL in App2 eine Action "updateUser". Da ich für App2 einen eingeloggten Benutzer brauche, muss ich diesem cURL-Request die Cookies des Logins mitgeben. Allerdings bekomme ich das nicht hin, sondern erhalte stattdessen immer die Rückmeldung "Benutzer nicht eingeloggt" von App2 als Antwort.
Ich habe schon diverse Lösungen ausprobiert, die ich im Netz gefunden habe, allerdings hat keine funktioniert.
PHP-Code:
$cookie_file_path = __DIR__."/cookie.txt";
$curl_handle = curl_init();
$body_json = json_encode(array('vorname' => '..', 'nachname' => '..',...));
$options = array(
CURLOPT_URL => 'https://my.example.com/app2.php/updateUser/index',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $body_json,
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7",
CURLOPT_VERBOSE => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_COOKIEJAR, $cookie_file_path,
CURLOPT_COOKIEFILE, $cookie_file_path,
CURLOPT_COOKIE => 'symfony='.$_COOKIE['symfony'],
CURLOPT_COOKIESESSION => true,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Content-Length: ' . strlen($body_json)
)
);
curl_setopt_array(
$curl_handle,
$options
);
$response = curl_exec($curl_handle);
$error = null;
if (curl_errno($curl_handle)) {
$error = curl_error($curl_handle);
echo $error;
}
curl_close($curl_handle);
Danke!
Kommentar