Obiekty tajne klienta

Biblioteka klienta interfejsów API Google dla .NET używa plików client_secrets.json do przechowywania parametrów client_id, client_secret i innych parametrów OAuth 2.0.

Plik client_secrets.json to plik w formacie JSON, który zawiera identyfikator klienta, tajny klucz klienta i inne parametry OAuth 2.0. Oto przykładowy plik client_secrets.json dla aplikacji internetowej:

{
  "web": {
    "client_id": "asdfjasdljfasdkjf",
    "client_secret": "1912308409123890",
    "redirect_uris": ["https://www.example.com/oauth2callback"],
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token"
  }
}

Oto przykładowy plik client_secrets.json dla zainstalowanej aplikacji:

{
  "installed": {
    "client_id": "837647042410-75ifg...usercontent.com",
    "client_secret":"asdlkfjaskd",
    "redirect_uris": ["http://localhost"],
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token"
  }
}

Format ten określa jeden z dwóch typów identyfikatora klienta:

  • web: aplikacja internetowa.
  • installed: zainstalowano aplikację.

Obiekty podrzędne web i installed zawierają te obowiązkowe elementy:

  • client_id (ciąg znaków): identyfikator klienta.
  • client_secret (ciąg znaków): tajny klucz klienta.

Wszyscy pozostali członkowie tego pliku są opcjonalne i biblioteka klienta .NET ich nie używa.

Motywacja

Tradycyjnie dostawcy punktów końcowych OAuth 2.0 oczekiwali, że ci korzystający z ich usług będą kopiować identyfikator klienta i tajny klucz klienta ze strony rejestracji i wklejać go do działającego kodu. Ta metoda jest podatna na błędy i daje niepełny obraz informacji potrzebnych do działania OAuth 2.0. OAuth 2.0 wymaga też znajomości wszystkich punktów końcowych i skonfigurowania identyfikatora URI przekierowania. Jeśli dostawcy usług udostępniają pliki client_secrets.json do pobrania, a biblioteki klienta są gotowe do korzystania z tych plików, wdrożenie protokołu OAuth 2.0 będzie łatwiejsze i mniej podatne na błędy.