Autentykacja 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 “Autentykacja użytkownika przez Google OAuth API”

  1. avatar Maciek pisze:

    Uwierzytelnianie! ;-)

  2. avatar cokolwiek pisze:

    I rarely leave a response, but I browsed a few of the responses on this page Autentykacja użytkownika przez Google
    OAuth API | xlab. I do have some questions for you
    if you do not mind. Is it simply me or do some of
    the responses come across like they are coming from brain dead visitors?
    :-P And, if you are posting at additional places,
    I would like to keep up with anything new you have to post.

    Could you list of every one of all your social
    pages like your linkedin profile, Facebook page or twitter feed?

Leave a Reply