Czy istnieje wsparcie sesji klienta za pośrednictwem interfejsu API REST Magento?

9

Pracuję nad rozszerzeniem funkcjonalności listy życzeń do interfejsu API REST Magento. Byłoby miło uzyskać dostęp do sesji klienta. Czy Magento ma jakieś wsparcie w dostępie do sesji klienta przez REST?

Ryre
źródło
Dlaczego potrzebujesz dostępu do sesji? Elementy listy życzeń są przechowywane w bazie danych i mają odniesienie do identyfikatora klienta. ..A może coś mi umknęło
Marius
Ponieważ nie mam identyfikatora klienta.
Ryre,
2
Ok ... szwy są sprawiedliwe ... przepraszam za moją ignorancję :)
Marius
Bez obaw! Moje pytanie było krótkie, więc zapewne trochę wyjaśnienia.
Ryre
Jak czytam w dokumentacji interfejsu API REST Magento, nie ma dostępu do sesji przez REST. Czy myślałeś o użyciu oAuth?
Anna Völkl,

Odpowiedzi:

5

Jak wspomniano w moich komentarzach powyżej, zalecam podanie loginu użytkownika oAuth, aby uzyskać dostęp do ID klienta. Aby odpowiedzieć na pytanie: Nie, nie można uzyskać dostępu do sesji klienta.

Przepływ może wyglądać następująco:

  1. Użytkownik uzyskuje dostęp do strony trzeciej, na której chcesz zapewnić funkcjonalność listy życzeń
  2. Funkcja listy życzeń / listy życzeń użytkownika (poprzez dodanie nowego elementu do listy życzeń, wyświetlenie jego listy życzeń itp.)
  3. Użytkownik loguje się za pośrednictwem oAuth w sklepie Magento
  4. Pobierz identyfikator klienta z oAuth
  5. Kontynuuj z funkcjonalnością listy życzeń

W przypadku autoryzacji użytkownika zalecamy postępowanie zgodnie z sekcjami „Uzyskiwanie nieautoryzowanego tokena żądania” i „Autoryzacja użytkownika” na tej stronie .

Anna Völkl
źródło
Twoja odpowiedź była pierwszą, która zaoferowała praktyczne rozwiązanie!
Ryre
Jaki jest akceptowany sposób uzyskiwania identyfikatora klienta od oAuth? Nigdzie nie widzę takiej funkcjonalności w swoich dokumentach.
Stepan Mazurov
Rozpracowałem to. Dla każdego innego, kto ma ten sam problem, upewnij się, że Twoja rola „klienta” ma uprawnienia dostępu do interfejsu API
Stepan Mazurov
Witaj @ Anna Völkl, Jak uzyskać identyfikator klienta w magento REST API? Ponieważ kiedy przekazuję token klienta w Nagłówku, potrzebuję identyfikatora klienta, który token klienta należy do tego konkretnego tokena klienta w magento 2
Aditya Shah
Moje produkty API zwraca produkty, jeśli spróbuję z klientem, otrzymuję błąd, mój adres URL: 192.168.1.65/anusthana/api/rest/customers error: snag.gy/0jbhTr.jpg może mi pomóc
@
6

Nie.

Sesja klienta jest powiązana z plikiem cookie frontonu, który ma klient przeglądający. Jeśli używasz sesji opartych na plikach, będą one przechowywane w var / session / - jeśli używasz bazy danych jako miejsca do przechowywania sesji, będą one przechowywane w core_session.

W każdym razie, aby móc uzyskać do niego dostęp, musisz znać session_id od klienta, który z założenia powinien znajdować się tylko między przeglądarką a serwerem. * 1)

Lepszym podejściem, jak zasugerowano w powyższych komentarzach, byłoby ustalenie, jakie informacje masz dla klienta (identyfikator_użytkownika, adres e-mail), a następnie dostęp do listy życzeń za jej pośrednictwem.

Kolejną rzeczą, o której należy pamiętać, jest to, że sesja ustanowiona w celu komunikacji z interfejsem API jest oddzielna od sesji klienta.

Ogólnie rzecz biorąc, uważam, że uzyskałbyś bardziej praktyczną odpowiedź, gdybyś zamieścił to, co próbujesz osiągnąć, korzystając z listy życzeń z aktualnymi ograniczeniami.

* 1) być może będziesz w stanie odczytać aktualnie używaną sesję plików cookie i zapisać ją w bazie danych w celu dalszego przetwarzania, ale ponownie będziesz potrzebować innych informacji, aby powiązać to z logiką, którą próbujesz obecnie wdrożyć, więc nie zobacz, jak to wykorzystać tutaj.

Kristof w Fooman
źródło
dzięki za świetną odpowiedź. Moja końcowego celem jest dostęp do danych klienta poprzez REST, że klient widzi podczas logowania do front-end: zamów historia, zapisane adresy, itd.
Ryre
Z pewnością pomogłoby trochę więcej kontekstu. Jaka aplikacja wysyła te żądania? Domyślam się, że masz witrynę inną niż Magento, w której chcesz wyświetlać dane Magento, ale nie jest to całkiem jasne z twojego pytania i może być czymś zupełnie innym. Sugestie OAuth obejmują działania, które klient musiałby wykonać. Inne podejścia obejmują dzielenie sesji między dwoma systemami (na przykład spójrz na różne integracje wordpress).
Kristof at Fooman
Twoje domysły są dość bliskie! Pomagam rozszerzyć podstawowe usługi REST dla aplikacji na iPhone'a. Front-end oauth rozwiązuje problem, który mam; przepraszam, że nie zadałem jaśniejszego pytania.
Ryre
1

Myślę, że to, czego szukasz, to połączenie interfejsu API REST i OAuth Magento. Dzięki OAuth użytkownik frontonu może zalogować się do środowiska Magento, dając aplikacji (trzeciej stronie) i dostęp do swoich danych klientów, takich jak historia zamówień.

O ile wiem, jest to tak blisko, jak to możliwe, aby przejść do sesji klienta za pomocą interfejsu API.

Sprawdź dokumentację Magento na ten temat, a także przyjemny artykuł Inchoo

Sander Mangel
źródło