Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-11-22, 21:52x



Odpowiedz w temacie  [ Posty: 10 ] 
Uwierzytelnianie WWW 
Autor Wiadomość
Awatar użytkownika

Rejestracja: 2014-03-26, 09:55
Posty: 79
Pomógł: 2
Post Uwierzytelnianie WWW
Wie ktoś może jak w symfonii działa logowanie do stron WWW? Docelowo chodzi o przerobienie tego na kod AMBasic. (Ewentualnie czy można kazać symfonii parsować kod php, przykładowo przez dispatch?)


Kod:
<?php

/**
* Logowanie do API
*
* @param resource $c cURL resource handle
* @param string $login Login użytkownika
* @param string $password Hasło użytkownika
* @return string Indentyfikatorr sesji użytkownika
*/
function login($c, $login, $password) {
    $params = Array(
        "method" => "login",
        "params" => Array($login, $password)
    );
    curl_setopt($c, CURLOPT_POSTFIELDS, "json=" . json_encode($params));
    $result = (Array) json_decode(curl_exec($c));
    if (isset($result['error'])) {
        return null;
    } else {
        return $result[0];
    }
}

/**
* Pobranie błędów
*
* @param resource $c cURL resource handle
* @param string $session Indentyfikatorr sesji użytkownika
*/
function getError($c, $session){
    $params = Array(
        "method" => "call",
        "params" => Array($session, 'internals.validation.errors', null)
    );
    curl_setopt($c, CURLOPT_POSTFIELDS, "json=" . json_encode($params));
    $result = (Array) json_decode(curl_exec($c));
    return $result;
}

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'http://shop.example.com/webapi/json/');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);

// zalogowanie użytkownika i pobranie identyfikatora sesji
$session = login($c, "api", "test");

if ($session != null) {
    $params = Array(
        "method" => "call",
        "params" => Array($session, "product.info",
                Array(59, true, true, true, true)
            )
    );

    // zakodowanie parametrów dla metody POST
    $postParams = "json=" . json_encode($params);
    curl_setopt($c, CURLOPT_POSTFIELDS, $postParams);

    // dekodowanie rezultatu w formacie JSON do tablicy result
    $data = curl_exec($c);
    $result = (Array)json_decode($data);

    // sprawdzenie, czy wystąpił błąd
    if (isset($result['error'])) {
        echo "Wystąpił błąd: " . $result['error'] . ", kod: " . $result['code'];
    } else {
        echo "Id: " . $result['product_id'] . "<br>";
         
        $translations = (Array)$result['translations'];
        $translPL = (Array)$translations['pl_PL'];
        echo "Nazwa w języku polskim: " . $translPL['name'] . "<br>";
         
        $stock = (Array)$result['stock'];
        echo "Cena: " . $stock['price'] . "<br>";
        echo "Stan magazynowy: " . $stock['stock'] . "<br>";
         
        $gfx = (Array)$result['images'];
        foreach ($gfx as $g) {
            $image = (Array)$g;
            echo "Id zdjęcia: " . $image['gfx_id'] . "<br>";
        }
         
        $attributes = (Array)$result['attributes'];
        foreach ($attributes as $attGId => $attG) {
            echo "Id grupy atrybutów: " . $attGId . "<br>";
            $attGroup = (Array)$attG;
            foreach ($attGroup as $attVId => $attV) {
                echo " - id atrybutu: " . $attVId . ", wartość: " . $attV . "<br>";
            }
        }
    }
} else {
    echo "Wystąpił błąd logowania";
}

curl_close($c);
?>



Dzięki za uwagę


2014-07-28, 11:13
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post Re: Uwierzytelnianie WWW
Tak można zalogować się z poziomu Symfonii.

Chodzi Ci o logowanie do jakiegoś sklepu?
Co to za sklep?
Co po zalogowaniu chcesz zrobić?

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2014-07-28, 11:23
Wyświetl profil
Awatar użytkownika

Rejestracja: 2014-03-26, 09:55
Posty: 79
Pomógł: 2
Post Re: Uwierzytelnianie WWW
To jest sklep stworzony na serwerach shoper.pl, cały kod php działa bez problemu, ale nie wiem jak taki kod napisać w AmBasic albo jak go przepchnąć przez parser php z poziomu symfonii. Całość działa tak że się loguje, a potem z tego co rozumiem wysyła zapytanie product.info które pobiera dane towaru.


2014-07-28, 11:34
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post Re: Uwierzytelnianie WWW
Wystarczy, że użyjesz klienta SOAP

Kod:
dispatch oSoap
oSOAP.mssoapinit("http://<AdresSklepu>/webapi/soap/?wsdl")
oSoap.login("uzytkownik","haslo")

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2014-07-28, 11:54
Wyświetl profil
Awatar użytkownika

Rejestracja: 2014-03-26, 09:55
Posty: 79
Pomógł: 2
Post Re: Uwierzytelnianie WWW
"Obiekt OLE nie został zainicjowany"


2014-07-28, 12:16
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post Re: Uwierzytelnianie WWW
Bo musisz mieć zainstalowany klient WebServices.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2014-07-28, 12:25
Wyświetl profil
Awatar użytkownika

Rejestracja: 2014-03-26, 09:55
Posty: 79
Pomógł: 2
Post Re: Uwierzytelnianie WWW
Jakiś tam zainstalowałem, ale nadal nie działa. Nie trzeba wpisać nazwy obiektu ? Albo może ściągnąłem zły bo ich jest multum.


2014-07-28, 12:30
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post Re: Uwierzytelnianie WWW
Skontaktuj się z Ekspertem.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2014-07-28, 12:57
Wyświetl profil
Awatar użytkownika

Rejestracja: 2014-03-26, 09:55
Posty: 79
Pomógł: 2
Post Re: Uwierzytelnianie WWW
Jak tak patrzę po googlu i przede wszystkim kodzie to zbyt problematyczne, bo jeszcze trzeba wysyłać zapytania i odkodowywać. Da radę wysłać to jakoś po PHP ?


2014-07-28, 15:16
Wyświetl profil
Awatar użytkownika

Rejestracja: 2014-03-26, 09:55
Posty: 79
Pomógł: 2
Post Re: Uwierzytelnianie WWW
Co może oznaczać błąd pokazany na screenie już po drugiej linijce?

dispatch soap = "MSSOAP.SOAPClient30"
soap.mssoapinit("http://symfonia.shoparena.pl/webapi/soap?wsdl")

P.S. Sklep jest już nieaktywny, ale dane cały czas można wywoływać dla przykładowych funkcji. Tak czy inaczej na aktywnym było to samo.


Załączniki:
error.jpg
error.jpg [ 100.9 KiB | Przeglądany 4407 razy ]
2014-09-05, 13:54
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 10 ] 

Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 16 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant