Interfejs SSO dla kontaktów
Ten artykuł wyjaśnia, jak zalogować kontakt za pomocą adresu e-mail lub identyfikatora użytkownika zewnętrznego. Korzysta on z tego samego appId i Secret Key co interfejs SSO dla subkont, ale URL, pola podpisu i strona docelowa są inne. Twórz subkonta i ustawiaj role za pomocą interfejsu SSO dla subkont.
Przegląd
Prześlij adres e-mail kontaktu lub identyfikator użytkownika zewnętrznego. SurveyMars sprawdza podpis i loguje ten kontakt.
- Jeśli kontakt jest subkontem, SurveyMars otwiera returnUrl. Jeśli returnUrl nie zostanie podany, otwiera listę ankiet.
- Jeśli kontakt nie jest subkontem, SurveyMars ignoruje returnUrl i otwiera stronę główną kontaktu.
Przypadki użycia
- Twój system ma już adres e-mail kontaktu lub identyfikator użytkownika zewnętrznego i chcesz uzyskać dostęp do SurveyMars bez hasła.
- Kontakt będący subkontem trafia na returnUrl. Inne kontakty pomijają returnUrl i trafiają na stronę główną kontaktu.
Zanim zaczniesz
1. Zaloguj się na główne konto i skopiuj appId z Moje konto.
2. Poproś wsparcie o włączenie Secret Key. Używaj tego klucza wyłącznie na swoim serwerze. Nie umieszczaj go w URL ani w kodzie front-endu.
3. Wygeneruj podpis SHA256 na swoim serwerze, a następnie otwórz link logowania metodą GET.

Żądanie
Metoda: GET
| Parametr | Wymagane | Opis |
| appId | Tak | Identyfikator głównego konta. Użyj tego samego appId co w interfejsie SSO dla subkont. |
| Warunkowe | Adres e-mail kontaktu. Podaj email lub thirdUserId, albo oba. email jest wymagany, gdy główne konto nie zezwala na pusty adres e-mail kontaktu. | |
| thirdUserId | Warunkowe | Identyfikator użytkownika zewnętrznego. Podaj email lub thirdUserId, albo oba. Jeśli podane są oba, weryfikacja używa tylko email. thirdUserId nadal jest uwzględniany w podpisie. |
| language | Nie | Język komunikatów. Nie jest uwzględniany w podpisie. |
| returnUrl | Nie | Strona otwierana po zalogowaniu subkonta. SurveyMars używa jej dla kontaktu będącego subkontem i ignoruje ją w pozostałych przypadkach. Nie jest uwzględniana w podpisie. |
| ts | Tak | Liczba sekund od 1970-01-01 00:00:00 UTC. Jest ważna przez 60 sekund. ts w URL musi być zgodne z ts użytym w podpisie. Generuj je, gdy użytkownik ma zamiar otworzyć link. |
| sign | Tak | Podpis. sign to małe litery szesnastkowego SHA256 z połączonego tekstu jawnego: appId + email + thirdUserId + ts + Secret Key. Kolejność musi być dokładnie taka sama. Secret Key jest dołączany wyłącznie na serwerze i nie może pojawić się w pasku adresu przeglądarki. Zobacz sekcję Budowanie podpisu poniżej. |
Budowanie podpisu
Zasady podpisu
1. Połącz pola podpisu w stałej kolejności, bez separatora: appId + email + thirdUserId + ts + Secret Key. Jeśli email lub thirdUserId zostanie pominięty, użyj w tym miejscu pustego ciągu. Nie usuwaj pola ani nie zastępuj go symbolem zastępczym. Secret Key jest dołączany wyłącznie na serwerze i nie może pojawić się w pasku adresu przeglądarki.
2. Haszuj ten ciąg za pomocą SHA256 i użyj małej szesnastkowej wartości jako sign.
3. language i returnUrl nie są uwzględniane w podpisie. Używaj tylko pól i kolejności z kroku 1.
4. ts to liczba sekund od 1970-01-01 00:00:00 UTC. Jest ważna przez 60 sekund. Generuj ts i sign, gdy użytkownik ma zamiar otworzyć link, i użyj tego samego ts w URL. Kodowanie URL nie może zmienić oryginalnych wartości użytych w podpisie.
5. Aby sprawdzić połączony ciąg, wklej go do narzędzia SHA256, takiego jak LZL online SHA256. W środowisku produkcyjnym generuj sign na swoim serwerze. Nie ujawniaj Secret Key przeglądarce.
6. Nie używaj ponownie podpisu SSO subkonta. Ten ciąg używa appId, email, userName, roleId i ts. Ten interfejs nie używa userName ani roleId.
Na przykład:
http://surveymars.com/app/login/contact/verify?appId=TTeEB8&[email protected]&ts=1790760357&language=2&returnUrl=https://surveymars.com/app/usercenter&sign=26c0c7d9da5e38c61d4aeecb223336d7a259cad0b75c8ff912855421fd832a4e
Adres e-mail i identyfikator użytkownika zewnętrznego
1. Wyślij co najmniej jeden z następujących elementów: email i thirdUserId.
2. Jeśli wyślesz oba, weryfikacja użyje email i zignoruje thirdUserId. Zachowaj oryginalny thirdUserId w podpisie i możesz pozostawić go w URL.
3. Jeśli główne konto nie zezwala na pusty adres e-mail kontaktu, email jest wymagany.
4. Jeśli to ustawienie jest wyłączone, skontaktuj się z pomocą techniczną, aby włączyć opcję "Allow empty contact email.". Po jej włączeniu możesz dodać kontakt bez adresu e-mail.
Gdzie trafia kontakt
1. Kontakt będący subkontem: SurveyMars otwiera returnUrl. Jeśli returnUrl nie zostanie podany, otwiera listę ankiet.
2. Inne kontakty: SurveyMars ignoruje returnUrl i otwiera stronę główną kontaktu.
Ważne uwagi
- Przechowuj Secret Key na swoim serwerze. Nie umieszczaj go w pasku adresu przeglądarki.
- Ten interfejs loguje kontakt. Nie tworzy subkonta ani nie ustawia roli subkonta.
- Koduj URL dla znaków takich jak @ w adresie e-mail. Podpisuj oryginalną wartość, a nie zakodowaną.
FAQ
Czym to się różni od SSO subkonta?
SSO subkonta używa /app/login/sso/verify do tworzenia subkonta lub logowania do niego. Logowanie kontaktu używa /app/login/contact/verify z adresem e-mail lub identyfikatorem użytkownika zewnętrznego. Pola podpisu są inne. Nie używaj ponownie sign.
Czy mogę wysłać tylko thirdUserId?
Tak, jeśli główne konto zezwala na pusty adres e-mail kontaktu. W przeciwnym razie email jest wymagany. Użyj pustego ciągu dla pominiętego pola w podpisie.
Wysłałem zarówno email, jak i thirdUserId. Dlaczego logowanie używa email?
Gdy oba są obecne, weryfikacja ignoruje thirdUserId i dopasowuje kontakt po email. thirdUserId nadal jest uwzględniany w podpisie.
Dlaczego kontakt, który nie jest subkontem, pominął returnUrl?
returnUrl ma zastosowanie tylko wtedy, gdy kontakt jest subkontem. W przeciwnym razie SurveyMars ignoruje go i otwiera stronę główną kontaktu.
Dlaczego weryfikacja podpisu kończy się niepowodzeniem?
Sprawdź Secret Key. Połącz appId, email, thirdUserId, ts i Secret Key w tej kolejności. Użyj pustego ciągu dla pominiętego email lub thirdUserId. Upewnij się, że ts nadal mieści się w 60 sekundach i że kodowanie URL nie zmieniło oryginalnych wartości. Nie uwzględniaj language ani returnUrl.
Dlaczego ts wygasa tak szybko?
W środowisku produkcyjnym ts musi mieścić się w granicach 60 sekund od czasu serwera. Generuj ts i sign, gdy użytkownik ma zamiar otworzyć link.