Ostatnio miałem przeprawę z autoryzacją poprzez FB . Połączyłem bundle FOSUserBundle z HWI.
Opis procesu tutaj: gist.github.com/danvbe/4476697
Przyszedł czas na wyciągnięcie listy friendsów i tutaj lipa ponieważ ową listę chciałem dopisać do bazy.
Wpierw chciałem utworzyć klasę HelperUser i wywołać obiekt tej klasy w Providerze (takim jak został opisany wyżej).
Niestety nie miałem dostępu do Doctrine z poziomu HelperUser. Myślałem, że stworzenie DependencyInj. załatwi sprawę, ale niestety Provider nie miał dostępu do Kontenera Serviców.
Co zrobiłem ?
Nadpisałem HWI\Bundle\OAuthBundle\Controller\ConnectController
a dokładnie metodę:
connectServiceAction . Jako, że kontroler ma dostęp do service, mogłem odnieść się do mojego helpera:
if ($currentToken instanceof OAuthToken) {
// Update user token with new details
$this->authenticateUser($request, $currentUser, $service, $currentToken->getRawToken(), false);
$this->container->get('my_user_helper')->updateFriendsList($userInformation->getResponse(), $service, $currentUser);
}
Co ważne. W routing podmieniłem źródła i wyglądały one następująco:
hwi_oauth_security:
resource: "@AcmeUserBundle/Resources/config/routing/login.yml"
prefix: /login
hwi_oauth_connect:
resource: "@AcmeUserBundle/Resources/config/routing/connect.yml"
prefix: /login
hwi_oauth_redirect:
resource: "@AcmeUserBundle/Resources/config/routing/redirect.yml"
prefix: /login
Nie można również zapomnieć o zmianie w firewallu dla resource ownera scope na "email,user_friends".
Od tego momentu możemy w Helperze działać na bazie
Opis procesu tutaj: gist.github.com/danvbe/4476697
Przyszedł czas na wyciągnięcie listy friendsów i tutaj lipa ponieważ ową listę chciałem dopisać do bazy.
Wpierw chciałem utworzyć klasę HelperUser i wywołać obiekt tej klasy w Providerze (takim jak został opisany wyżej).
Niestety nie miałem dostępu do Doctrine z poziomu HelperUser. Myślałem, że stworzenie DependencyInj. załatwi sprawę, ale niestety Provider nie miał dostępu do Kontenera Serviców.
Co zrobiłem ?
Nadpisałem HWI\Bundle\OAuthBundle\Controller\ConnectController
a dokładnie metodę:
connectServiceAction . Jako, że kontroler ma dostęp do service, mogłem odnieść się do mojego helpera:
if ($currentToken instanceof OAuthToken) {
// Update user token with new details
$this->authenticateUser($request, $currentUser, $service, $currentToken->getRawToken(), false);
$this->container->get('my_user_helper')->updateFriendsList($userInformation->getResponse(), $service, $currentUser);
}
Co ważne. W routing podmieniłem źródła i wyglądały one następująco:
hwi_oauth_security:
resource: "@AcmeUserBundle/Resources/config/routing/login.yml"
prefix: /login
hwi_oauth_connect:
resource: "@AcmeUserBundle/Resources/config/routing/connect.yml"
prefix: /login
hwi_oauth_redirect:
resource: "@AcmeUserBundle/Resources/config/routing/redirect.yml"
prefix: /login
Nie można również zapomnieć o zmianie w firewallu dla resource ownera scope na "email,user_friends".
Od tego momentu możemy w Helperze działać na bazie
![:) :)](http://e.pinger.pl/smile.gif)