dev-master
9999999-dev
The Requires
The Development Requires
Wallogit.com
2017 © Pedro Peláez
With this bundle, you can request an access token on your api (that uses FOSOAuthServerBundle) against a facebook access token. This bundle will check that the facebook access token is valid, and get the fb_id of the user., (*1)
For example: you have an iOS app that needs a token to authenticate a user against your api, but you want to only show the Facebook SSO authentication to your user., (*2)
Add the bundle to your AppKernel, (*3)
class AppKernel extends Kernel
public function registerBundles()
{
$bundles = array(
...
new AdrienBrault\OAuth2FacebookGrantBundle\ABOAuth2FacebookGrantBundle(),
Configure the bundle:, (*4)
ab_oauth2_facebook_grant:
user_provider: bundle.facebook_user_provider
uri: "http://grants.yourapi.com/facebook_access_token"
And implement your bundle.facebook_user_provider like this:, (*5)
<?php
namespace AdrienBrault\Core\UserBundle\Security;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use FSC\Core\UserBundle\Manager\UserManager;
class FacebookUserProvider implements UserProviderInterface
{
protected $userManager;
public function __construct(UserManager $userManager)
{
$this->userManager = $userManager;
}
public function loadUserByUsername($facebookId)
{
$userRepository = $this->userManager->getRepository();
return $userRepository->findOneBy(array(
'facebookID' => $facebookId,
));
}
public function refreshUser(UserInterface $user)
{
$class = get_class($user);
if (!$this->supportsClass($class)) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', $class));
}
return $this->loadUserByUsername($user->getFacebookID());
}
public function supportsClass($class)
{
return $this->userManager->supportsClass($class);
}
}
Endpoint: /oauth/v2/token by default, (*6)
Parameters:, (*7)
- client_id - client_secret - facebook_access_token
Example, (*8)
$ curl -XGET "http://youapi/oauth/v2/token?client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=http%3A%2F%2Fgrants.yourapi.com%2Ffacebook_access_token&facebook_access_token=A_VALID_FACEBOOK_ACCESS_TOKEN"
{
"access_token": "krXC75SKp--cISB_fqHA4aSsviyDVJwuutiWgaM",
"expires_in": 604800,
"token_type": "bearer",
"scope": null,
"refresh_token": "mnFs3VsGIF87x6VIazAz5ftvYw7VTfRqoBSqNCY"
}