Autentificarea Android prin intermediul oauth2

Protocolul folosește Twitter, Google, Flickr, Digg, Yahoo și multe alte servicii.

Autentificare - vizitați o întreprindere de afaceri și vă prezentați identitatea. Garda arată și decide: Este identitatea autentică? imprimarea pe loc? Imaginea coincide? Un gardian cu experiență vă poate recunoaște personal și dor și așa mai departe. Autentificarea poate fi simplă și poate fi complicată.







Pe site-uri, autentificarea se face de obicei în conformitate cu schema de conectare / parolă, forțând utilizatorul să introducă date și să le verifice pe server.

Utilizarea OAuth2 este potrivit pentru:

  • Obțineți permisiunea utilizatorului să acceseze serviciul online utilizând contul acestuia.
  • Autentificarea serviciului online în numele utilizatorului.
  • Manipularea erorilor de autentificare.

Pentru a începe să utilizați OAuth2, ar trebui să știți:

Cererea Auth Token

Autentificarea Android prin intermediul oauth2

Având permisiunile necesare, puteți apela AccountManager.getAuthToken () pentru a obține indicativul. Majoritatea metodelor AccountManager sunt asincrone. Va trebui să o implementați într-o serie de apeluri telefonice, de exemplu:

În acest exemplu, clasa OnTokenAcquired extinde contul AccountManagerCallback. Apelurile AccountManager rulează () în OnTokenAcquired cu AccountManagerFuture. conținând un pachet. Dacă apelul are succes, jetonul va fi în interiorul Bundle.

Puteți obține un jeton din Bundle:

Dacă totul merge bine, pachetul va conține un token valid în cheia KEY_AUTHTOKEN. Dar nu întotdeauna totul merge așa cum a fost planificat.

Aplicațiile pot gestiona primele două cazuri, prezentând un mesaj de eroare utilizatorului. Dacă rețeaua nu funcționează sau utilizatorul decide să nu acorde acces, aplicația dvs. nu poate face nimic. Ultimele două cazuri sunt un pic mai complicate, deoarece aplicațiile bine optimizate trebuie să se ocupe automat de aceste defecțiuni.







Cel de-al treilea eveniment de eșec, care are puteri insuficiente, este transmis prin Bundle. pe care îl primiți în AccountManagerCallback (OnTokenAcquired din exemplul anterior). Dacă Bundle include o intenție în cheia KEY_INTENT. apoi autentificatorul vă spune că are nevoie de interacțiune directă cu utilizatorul înainte de a vă putea da un token valid.

Rețineți că exemplul utilizează startActivityForResult (). și puteți intercepta rezultatul Intent în metoda onActivityResult () în activitatea dvs. Dacă nu vei prinde rezultatul răspunsului Authenticator intenție, va fi imposibil să se determine dacă utilizatorul a fost autentificat sau nu. Dacă rezultatul este RESULT_OK. autentificatorul a actualizat acreditările salvate că acestea sunt suficiente pentru accesul pe care le-ați solicitat, ar trebui să apelați apoi AccountManager.getAuthToken () din nou și să solicite un nou jeton de autentificare.

Ultima dată când un token a expirat, nu este într-adevăr o eroare AccountManager. Singura modalitate de a găsi într-adevăr, dacă token-ul a expirat - este de a contacta serverul care ar fi ineficiente și costisitoare din AccountManager în mod constant du-te on-line și a verifica starea tuturor indicativele lor. Deci, acest eșec poate fi detectat numai atunci când o aplicație încearcă să utilizeze un token de autentificare pentru a accesa serviciul web.

Conectarea la servicii online

Următorul exemplu arată modul de conectare la un server Google. Deoarece Google utilizează standardul de protocol OAuth2 pentru a autentifica cererile, metodele discutate aici sunt foarte aplicabile. Rețineți că fiecare server este diferit. Este posibil să fie nevoie să faceți mici modificări la acest exemplu pentru a ține cont de situația dvs. specifică.

API-ul Google necesită patru valori pentru fiecare solicitare: cheia API, codul client, secretul clientului și cheia de autentificare. Primele trei sunt obținute din Consola Google API. Ultima valoare pe care o obțineți este numită AccountManager.getAuthToken (). Le transmiteți serverului Google ca parte a cererii HTTP.

Dacă cererea returnează o eroare HTTP de 401, atunci tokenul a fost respins. Cea mai obișnuită cauză este expirarea simbolului. Remediul este simplu: suna AccountManager.invalidateAuthToken () și se repetă solicitarea de jetoane din nou.

De la expirarea token-ul este un eveniment comun și corectarea acestei situații destul de ușor, multe aplicații necesită pur și simplu jetonul de expirare, chiar înainte de a deveni conștienți de acest lucru. În cazul în care operațiunea de actualizare ieftine jeton pentru serverul dvs., puteți provoca AccountManager.invalidateAuthToken () înainte de prima AccountManager.getAuthToken de apel () și să se scape de necesitatea de a solicita o autentificare jeton de două ori.

În viitor, vom examina exemple practice pentru OAuth.

Lectură suplimentară







Articole similare

Trimiteți-le prietenilor: