GC.AUTH — dostęp jako użytkownik
Kod autoryzacyjny
1. Pozyskanie kodu autoryzacyjnego
Aby pozyskać kod, który następnie można wymienić na właściwe tokeny służące autoryzacji, przekieruj użytkownika na adres:
https://[authorization_server_url]/oauth/authorize?redirect_uri=[redirect_uri]&client_id=[client_id]&response_type=code
- [authorization_server_url] — adres serwera autoryzującego, np.
auth.gearcode.eu - [client_id] — identyfikator aplikacji (1), do której loguje się użytkownik. Aplikacja musi zostać wcześniej utworzona w GC.AUTH.
- [redirect_uri] — adres URL, na który zostanie przekazany kod autoryzacyjny. Adres musi zostać wcześniej dodany do listy adresów dozwolonych (2).
Po udanym zalogowaniu się użytkownika w GC.AUTH zostaje on przekierowany na [redirect_uri], z dołączonym kodem autoryzacyjnym.
Dla opisanej powyżej aplikacji żądanie i odpowiedź wyglądają następująco:
https://[authorization_server_url]/oauth/authorize?redirect_uri=https%3A%2F%2Fmy.sample.webapp.com%2Fauth-callback&client_id=sample.webapp.fe9d3e203b164c7e8896369673003291&response_type=code
https://my.sample.webapp.com/auth-callback?code=XC3pJl56JP_N8VET3x...pY7h7XCjw
2. Wymiana kodu autoryzacyjnego na tokeny
Aby wymienić kod autoryzacyjny na tokeny, wywołaj bezpiecznym kanałem* żądanie HTTP:
POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
code=[code]&grant_type=authorization_code&client_id=[client_id]&client_secret=[client_secret]&resource_id=[client_id]
[client_secret] — tajny klucz aplikacji; musi być przechowywany w sposób bezpieczny. Klucz można pozyskać w GC.AUTH (1).
Jeżeli przesłane dane są poprawne, w odpowiedzi zostają zwrócone informacje o tokenach:
{
"access_token": "eyJhbGciOi…cP6zb4",
"token_type": "bearer",
"expires_in": 899,
"refresh_token": "ILLu1L5ks…8DZQ"
}
* Przez bezpieczny kanał rozumiana jest komunikacja typu serwer-serwer, z całkowitym pominięciem user agenta.
Refresh token
Pozyskany access_token należy cyklicznie odświeżać przy użyciu refresh_token. W tym celu wywołaj żądanie HTTP:
POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=[refresh_token]&client_id=[client_id]&resource_id=[client_id]&client_secret=[client_secret]
Jeżeli przesłane dane są poprawne, w odpowiedzi zostają zwrócone informacje o tokenach:
{
"access_token": "eyJhbGciOi…ZWU1Y2U0",
"token_type": "bearer",
"expires_in": 899,
"refresh_token": "mKhyYrlh…xWIyp"
}