Android hitelesítést OAuth2

Az alkalmazott protokoll Twitter, Google, Flickr, Digg, a Yahoo és számos egyéb szolgáltatás.

Authentication - meglátogatja a modális vállalati és mutassa identitásukat. Az őr néz ki, és úgy dönt: a tanúsítványt? tömítések helyett? fotó az ugyanaz? Tapasztalt őr megismerheti személyesen, és hiányzik egyébként. A hitelesítés lehet olyan egyszerű, mint bonyolult lehet.

A weboldalak, általában a hitelesítés keresztül történik a rendszer / jelszó, arra kényszerítve a felhasználó adja meg adatait, és azokat a szerveren.

Segítségével OAuth2 számára:

  • Megszerezték a felhasználó számára az online szolgáltatás használatával fiókját.
  • A hitelesítés az online szolgáltatás az Ön nevében.
  • Hitelesítési hiba kezelése.

Ha meg kívánja kezdeni OAuth2, tudnia kell:

Auth tokenigénylési

Android hitelesítést OAuth2

Miután a szükséges hatáskört, akkor hívja AccountManager.getAuthToken (), hogy a jelzőt. Most Fiókkezelő módszerek - indukció. El kell ismernünk, hogy egy sor visszahívások, mint például:

Ebben a példában, az osztály kiterjeszti OnTokenAcquired AccountManagerCallback. Fiókkezelő okoz run () a OnTokenAcquired a AccountManagerFuture. tartalmazó Bundle. Ha a hívás sikeres, a token belül Bundle.

Tudod kap egy jelzőt a Bundle:

Ha minden jól megy, a Bundle tartalmaz egy érvényes token KEY_AUTHTOKEN gombot. De nem minden jól megy a tervek szerint.

Alkalmazás tudja kezelni az első két esetben meg hibaüzenet a felhasználónak. Ha a hálózat nem működik, vagy a felhasználó úgy döntött, hogy nem engedélyezi a hozzáférést, a személyes alkalmazás tehetünk róla. Az utóbbi két esetben egy kicsit bonyolultabb, mert jól optimalizált alkalmazás kezelje ezek a hibák automatikusan.

A harmadik hiba esetén, amelynek kellő hatáskör keresztül továbbított Bundle. hogy kapsz a AccountManagerCallback (OnTokenAcquired az előző példában). Ha Bundle tartalmaz szándék a KEY_INTENT gombot. a hitelesítő azt mondja, hogy szüksége van egy közvetlen interakció előtt a felhasználó tud adni egy érvényes token.

Megjegyezzük, hogy a példa használja startActivityForResult (). és meg lehet fogni szándék eredményeképpen az eljárás onActivityResult () a tevékenységet. Ha nem megy, hogy utolérjék az eredmény szándék hitelesítő választ, akkor lehetetlen meghatározni, hogy a felhasználó hitelesítése, vagy sem. Ha RESULT_OK eredményt. A hitelesítő frissítette a mentett hitelesítő, hogy az elegendő a hozzáférés, amit kért, akkor majd hívja AccountManager.getAuthToken () újra és kérjen új hitelesítési token.

Az utóbbi időben a token lejárt, nem igazán Fiókkezelő hiba. Az egyetlen módja annak, hogy megtudjuk, hogy a token lejárt -, hogy lépjen kapcsolatba a kiszolgáló, hogy nem lenne a pazarló és költséges a Fiókkezelő folyamatosan megy online, és ellenőrizze az állapotát minden a zsetont. Annak érdekében, hogy ez a hiba akkor is csak, ha egy alkalmazás próbál használni hitelesítési token szolgáltatások eléréséhez.

Csatlakozás az online szolgáltatások

Az alábbi példa bemutatja, hogyan lehet csatlakozni a Google szerverén. Mivel a Google használ OAuth2 protokollszabvány kérelmek hitelesítésére, a technika itt tárgyalt széles körben alkalmazható. Tartsuk szem előtt, hogy minden szerver más. Szükség lehet arra, hogy kis változások ebben a példában, hogy vegye figyelembe az adott helyzetben.

Google API szükségessé teszi az olyan négy érték minden kérés: API kulcs, ügyfél-azonosítót, az ügyfél titkos, és auth gombot. Az első három kapunk a Google API Console honlapján. Az utolsó érték kapsz hívja AccountManager.getAuthToken (). Ön továbbadja azokat a Google szerver részeként HTTP-kérést.

Ha a lekérdezés egy HTTP-401 hiba, akkor a token elutasították. A leggyakoribb oka - lejárt a token. A javítás egyszerű: hívja AccountManager.invalidateAuthToken () és ismételje meg a kérést token újra.

Mivel lejárt a token gyakori eset és korrekciója ez a helyzet elég egyszerű, sok alkalmazás egyszerűen megkövetelik a lejárati token még mielőtt ez a tudatában. Ha a frissítés token olcsó üzemeltetést a szerver, akkor is okozhat AccountManager.invalidateAuthToken (), mielőtt az első hívást AccountManager.getAuthToken (), és hogy megszabaduljanak a szükséges kérni a hitelesítési token kétszer.

A jövőben, akkor nézd meg a gyakorlati példák OAuth.

további irodalom

Kapcsolódó cikkek