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"
}