Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 9 / 14 Autentifikacija II: Google ~45 min
📖 Teorija

Namų darbas — Google prisijungimas ir spąstai

Namų darbas — prisijunk per Google ir įveik spąstus. Šioje pamokoje spąstai — pati esmė: Google prisijungimą sunku „šiek tiek" suklysti, todėl atidžiai.

Paruošimas (Google Cloud Console):

  1. Sukurk Web OAuth klientą → jo ID įrašyk į strings.xml (google_web_client_id) IR serverio GOOGLE_WEB_CLIENT_ID.
  2. Sukurk Android OAuth klientą su paketu eif.viko.lt.pica ir savo debug SHA-1:
    keytool -list -v -keystore ~/.android/debug.keystore \
      -alias androiddebugkey -storepass android -keypass android
    
  3. Paleisk backendą su nustatytu GOOGLE_WEB_CLIENT_ID, programą — tikrame telefone (arba Play emuliatoriuje).

Testai: prisijunk per Google → turi patekti į meniu. Atsijunk, prisijunk per el. paštą → tas pats meniu. Backende matysi vieną vartotoją su tavo el. paštu.

Keturi TIKRI spąstai, kuriuos patys sugavom:

  1. Web vs Android kliento ID. Ir programa, ir serveris naudoja Web ID. Padavęs Android ID gausi audience does not match aud claim. (Detaliau — 3 žingsnis.)
  2. SHA-1 turi būti užregistruotas. Jei debug SHA-1 nėra Android kliento konfigūracijoje, getGoogleIdToken iškart mes klaidą (GetCredentialException / „no credentials available") — Google atsisako net parodyti paskyrų. Kiekvienas kūrėjas turi PRIDĖTI savo SHA-1.
  3. Reikia Google Play Services. Credential Manager remiasi Play Services. Įprastas emuliatorius (be „Google Play" atvaizdo) jų neturi → srautas lūžta. Testuok tikrame telefone arba emuliatoriuje su Play Store.
  4. Su curl pilnai neišbandysi. Gali pasiųsti POST /auth/google su išgalvotu id_token, bet idtoken.Validate jį atmes → 401. Tai gerai (parodo, kad patikra veikia), bet tikrą raktą gauna tik programa iš Google. Backendo /auth/google „laimingo kelio" negalima patikrinti vien curl — reikia realaus srauto iš telefono.

Atsiskaitymui: ekrano nuotraukos: (1) „Sign in with Google" mygtukas ir Google paskyrų pasirinkimas, (2) meniu po Google prisijungimo, (3) curl su fake token → 401 (spąstas #4 kaip įrodymas, kad patikra veikia).

Toliau. Dabar Pica turi abu prisijungimo būdus po vienu raktų kontraktu. Likusi programa (9–11 pamokos) veikia vienodai — nes jai rūpi tik žetonas, ne tai, kaip jį gavai. Tai ir yra gero architektūrinio sprendimo dovana.