Uwierzytelnianie użytkownika przez Google OAuth API

Author: Piotr Pasich (piotr.pasich) | styczeń 22nd, 2013
avatar

Podczas prac nad jednym z ostatnich projektów spotkaliśmy się z problemem autentykacji użytkowników na stronie przez Google API. Jednak pomimo ogromnego zaangażowania community nie udało nam się znaleźć gotowego i działającego bundle’a przygotowanego dla Symfony 2.1, dlatego chcielibyśmy podzielić się jednym z wypracowanych przez zespół XSolve rozwiązań tego zagadnienia.

Podany niżej przykład implementuje jedynie logowanie za pomocą Google API, ale nic nie stoi na przeszkodzie, aby rozszerzyć go o rejestrację. Wystarczy w klasie service’u w przypadku braku użytkownika obsłużyć jego utworzenie.

Instalacja niezbędnych repozytoriów

Aby przejść do meritum omawianego w artykule problemu, należy przyjąć, że mamy do dyspozycji zainstalowane i prawidłowo skonfigurowane trzy bundle, w tym FOSUserBundle (https://github.com/FriendsOfSymfony/FOSUserBundle) używanego do obsługi użytkowników.

Zaczynamy od wprowadzenia bundli do composera:

“require”: {
“friendsofsymfony/user-bundle”: “*”,
“bitgandtter/google-api”: “dev-master”,
“bitgandtter/google-bundle”: “dev-master”,
},

A następnie z poziomu consoli aktualizujemy repozytoria przez

composer update;

Google OAuth 2.0

Zaczynamy od pozyskania klucza google w Google APIs Console pod adresem https://code.google.com/apis/console . Poniższe dane będą przydatne w konfiguracji aplikacji:

Konfiguracja

Po założeniu klucza API w Google przenosimy dane do konfiguracji w pliku app/config/parameters.yml :

Utworzenie service’u

Zgodnie z ideą Dependency Injection w Symfony 2 dla mechanizmów autoryzacji i autentykacji przez Google tworzymy osobny service.

Definiujemy go w pliku Xsolve/TestBundle/Resources/config/services.xml

Oraz tworzymy klasę service’u w Xsolve/TestBundle/Service/GoogleAuthorizationManager.php

Autentykacja Google działa na podobnych zasadach, jak Facebook API – wysyłamy żądanie przekierowując użytkownika na odpowiedni adres po stronie Google, a w odpowiedzi otrzymujemy specjalny token zawarty w parametrze code, dzięki któremu biblioteka może pobrać dane o użytkowniku.

Controller

Na końcu pozostaje nam zdefiniowanie controllera obsługującego akcję:

Teraz wystarczy sprawdzić jedynie działanie skryptu. W tym celu należy utworzyć button logowania przekierowujący użytkownika pod adres /oauth2callback .

Have fun!

Tags: , , , , , , ,

Podyskutuj na ten temat:

2 Responses to “Uwierzytelnianie użytkownika przez Google OAuth API”

  1. avatar Maciek pisze:

    Uwierzytelnianie! ;-)

  2. avatar Paweł pisze:

    Tak jak pisze Maciek, “uwierzytelnienie”.
    Autoryzacja, uwierzytelnienie, autoryzacja, uwierzytelnienie. Proszę powtarzać za mną… ;)

Leave a Reply