adrienbrault / oauth2-facebook-grant-bundle

该软件包的最新版本(dev-master)没有可用的许可证信息。

dev-master / 0.1.x-dev 2014-03-17 04:34 UTC

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"
}