Authentication OAuth2 melléklet a Google-bejelentkezést

OAuth2 hitelesítést az alkalmazás segítségével Google bejelentkezési. Folyamatos hozzáférést az API Google 24

  • 03.04.17 10:28 •
  • marypodolyak •
  • • # 325518
  • • Habrahabr
  • • a homokozóban
  • 3 •
  • 4500

- mint a Forbes, csak jobb.

Ez a módszer lesz szó az osztályban, valamint hogyan lehet a zsetont kellett dolgozni az API Google.

A tanulság lesz egy részleges fordítása a hivatalos dokumentumok. De először egy kis történelem az én gyakorlat és az első dolgozni OAuth2, talán valaki lesz egy hasonló helyzetben.

Beletelt, hogy egy chat alkalmazás közvetlen YouTube adás. Aztán megtudtam, hogy kérés küldésére fordítás (és csak akkor chat) szükséges OAuth2 a felhasználó hitelesítésére. Elkezdtem keresni. Információt ebben a témában nagyon kicsi, akkor töredezett, nem alkalmas a helyzet, és persze minden volt angolul. Alapvetően az információ, hogy működjön együtt a legnépszerűbb API: Drive, Cloud, a Google Plus. A hivatalos dokumentáció YouTube API egy kész kódot, hogy így élvezni, de ez nem alkalmas Android. Miután eltöltött jelentős mennyiségű időt, próbálgatással, azért jöttem, hogy egy működő megoldást. Az első dolog, amit szerettem volna csinálni, miután az információgyűjtés „egy kupacban”, és egyfajta azon keresztül, és spodviglo hogy megírjam ezt a tutorial.


Ez nem más, mint a poszt kérésére válaszul lépett tartalmazó oldal authCode, és a kód már az oldal fejlécében. Minden vonatkozó ajánlást az API, és az intézkedés, hogy elrejtse a kódot a felhasználó bal a fejlesztő.

1. beszerzése hitelesítő

Az API menedzser, hozzon létre egy új projektet (vagy válasszon egy meglévőt):

Authentication OAuth2 melléklet a Google-bejelentkezést


Töltse ki a mezőt az alkalmazás nevét és a csomag. Ezután válassza ki a szolgáltatást Connect (Google bejelentkezési), itt meg kell adnia egy alkalmazás SHA1 kulcs, hogy ez egyszerű: az Android Studio Gradle megtalálni a lapon nyitja meg a lap Feladatok-android-signingReport. Kattintsunk kétszer, és a naplók információk megjelenítéséhez kulcsokat. Találunk SHA1 kulcs másolatát.

Authentication OAuth2 melléklet a Google-bejelentkezést


A gombra kattintva «létrehozása konfigurációs fájl», majd «Download google-services.json». Ez a fájl tárolja JSON «APP» projekt mappát.

Fontos! Ha megy, hogy tegye közzé az alkalmazást a Google Play, hibakeresési SHA1 gomb kell cserélni egy kulcs kiadása, illetve, és helyére a konfigurációs fájlt.

Az API menedzser, azt látjuk, hogy a létrehozott kulcs és az ügyfél-azonosítók OAuth. Elég csak webes ügyfél adatai (ügyfél-azonosító és az ügyfél titkos).

Authentication OAuth2 melléklet a Google-bejelentkezést

A lap „ablak hozzáférés OAuth kérés” meg lehet változtatni az e-mail címét és nevét a termék - ez az, amit akkor írt, amikor engedélyt kért, hogy a „Függelék **** kéri ...”

2. Állítsa be a kliens Sign-In

, Hogy hozzá a fájlt Gradle alkalmazás számára, hogy hozzáférést biztosít a Google Api Client függően:


És a plug-in (a végén a fájlt):


A Gradle projekt fájlt, attól függően, hogy:


Itt a legnagyobb érdeklődés a sort:

requestServerAuthCode (getString (R.string.server_client_id)) - kérje a authCode, átadva a paraméter CID (összes teljes), amely megkapta a fenti.

requestScopes (új kör ( „***”)) - bekéri a szükséges API használt régióban / területen elérhető. Vannak már bizonyos területeken szempontjaik, de ha szükséges, ott nem található, akkor meg a saját, mint az én esetemben. Felhasználói hozzáférés fog megjelenni a „mi” akar az alkalmazást.


Ez mind a szabvány szerint határoztuk meg:

enableAutoManage (ez, ez) - a paraméterek át a hallgató, és activiti csatlakozás (GoogleApiClient.OnConnectionFailedListener végre interface).

addApi (Auth.GOOGLE_SIGN_IN_API, GSO) - azt mutatják, hogy használja a Bejelentkezés api korábban létrehozott objektum lehetőségeket.


Úgy néz ki, mint ez:

A activiti gomb definiálása mint az összes többi nézet, hogy poveshat hallgató és kattintson végre módszer:


A paraméterek telt konfigurálva mApiClient. RC_AUTH_CODE bármennyi, mint mindig, hogy követik az eredményeket activiti.

Authentication OAuth2 melléklet a Google-bejelentkezést


3. Első Auth kód


Az eredmény egy megerősítő kód, mint egy egyszerű szöveg, ez így néz ki:

acct.getEmail ()
acct.getDisplayName ()
acct.getPhotoUrl ()

Ezek az adatok szükségesek lehetnek, például, hogy helyezze őket a fejlécben NavigationView.

4. előállítás Access Token és Frissítés Token


Nézzük a lehetőségeket. A Request.Builder () Átadja az url, amely megkapja jelzők:


A fejlécben a Content-Type:


Azt jelzi, hogy ez a POST módszert átadni szerv:


Alakult requestBody tartalmaznia kell a paramétereket:

„Grant_type”, „authorization_code” - jelzi, hogy az átadás lesz a megerősítő kód
"Client_id", getString (R.string.server_client_id) - a paraméter az ügyfél-azonosító, ami Manager API
„Client_secret” getString (R.string.client_secret) - ügyfél titkos kapott API menedzser
„Kód”, authCode - valójában a kódot.

Az aszinkron kérést, cserébe kap egy szabályos JSON minden szükséges adatot:

5. frissítése Access Token

A kérés alapvetően ugyanaz, mint a 4. lépésben, kivéve néhány paraméter:


Itt fontos paraméterei:

„Grant_type”, „refresh_token” - stílusban jelzik, hogy a küldő frissítési token
„Refresh_token” mRefreshToken - maga jelzőjét

A válasz lesz a JSON, amely az új hozzáférési tokent, ami ismét utal az API:

Például hogyan néz ki egy kérelmet az API, és ahogy a frissítés végrehajtásához token.
Lekérdezés az API használom Retrofit2 + RxAndroid. Úgy néz ki, mint egy kérés egy élő chat:


Fontos megjegyezni, hogy a fejlécben a kulcs típusát engedély kell küldeni token és hozzáférési tokent is. Ez azért van, mert:


Ezután olyan kérelmet keresztül RxAndroid, és mivel onError visszahívási jönnek mindenféle hibákat, ott is jön HttpException hibakód 401 Illetéktelen óra után. Itt kezelem, ellenőrizze, hogy ez ugyanaz a hiba, akkor hozza a megfelelő típust, ellenőrizze, vajon nem egy kód 401 és végrehajtja egy eljárást egy új tokent, majd ismételje meg a kérést.


Csak azért, hogy ellenőrizze a token van egy GET kérés:


A válasz jön adat token, ha továbbra is aktív, vagy hiba, ha az élet ideje.

Ismét, a végrehajtás a frissített Google token elhagyja a fejlesztő.

A munka megkezdése előtt check kéréseket harmadik fél által készített alkalmazás / bővítmény, mint a postás, hogy ellenőrizze a pontosság a bemeneti paraméterek és a kapott válaszokat. Én nagyon boldog lesz, ha valaki a leckét hasznos lesz!

Linkek a használt dokumentáció:

Kapcsolódó cikkek