adrienbrault / oauth2-facebook-grant-bundle
该软件包的最新版本(dev-master)没有可用的许可证信息。
dev-master / 0.1.x-dev
2014-03-17 04:34 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ~3.7
- symfony/symfony: ~2.1
This package is auto-updated.
Last update: 2024-09-12 03:06:42 UTC
README
使用此扩展包,您可以在您的api(使用FOSOAuthServerBundle)上请求访问令牌,针对Facebook访问令牌。此扩展包将检查Facebook访问令牌是否有效,并获取用户的fb_id。
例如:您有一个iOS应用,该应用需要令牌来对您的api进行用户认证,但您只想向用户展示Facebook SSO认证。
安装
将扩展包添加到您的AppKernel
class AppKernel extends Kernel public function registerBundles() { $bundles = array( ... new AdrienBrault\OAuth2FacebookGrantBundle\ABOAuth2FacebookGrantBundle(),
配置扩展包
ab_oauth2_facebook_grant:
user_provider: bundle.facebook_user_provider
uri: "http://grants.yourapi.com/facebook_access_token"
并像这样实现您的 bundle.facebook_user_provider
<?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); } }
用法
端点:默认为 /oauth/v2/token
参数
- client_id
- client_secret
- facebook_access_token
示例
$ 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" }