Symfony HWIOAuthBundle Accesstoken

Мне нужно получить токен доступа в социальной сети, например, на github. Логика заключается в том, что когда мой аутентификационный пользователь входит в профиль, он может поставить кнопку и подтвердить учетную запись в социальной сети, и в этой ситуации мне нужен токен доступа токен oauth. У меня стандартная регистрация и аутентификация, и мне нужно только получить токен доступа и установить его в БД.

Я устанавливаю пакетную запись в ядре

"hwi/oauth-bundle": "0.4.*@dev"new HWI\Bundle\OAuthBundle\HWIOAuthBundle(),

мой конфиг:

hwi_oauth:
connect:
account_connector: app.provider.user_provider

firewall_name: secured_area

resource_owners:
github:
type:                github
client_id:           "%github_app_id%"client_secret:       "%github_app_secret%"scope:              "user,public_repo"

и мой маршрут:

hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"prefix:   /connect

hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"prefix:   /login

github_login:
path: /login/check-github

и рунинг в связке

hwi_oauth_security:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"prefix: /login

hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"prefix: /login

hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"prefix:   /login

и моя безопасность:

firewalls:
secured_area:
anonymous: ~
oauth:
resource_owners:
github:          "/login/check-github"login_path:        /login
use_forward:       false
failure_path:      /login

oauth_user_provider:
service: app.provider.user_provider

и конфиг для сервиса:

<parameters>
<parameter key="my_user_provider.class">Artel\ProfileBundle\Providers\UserProvider</parameter>
</parameters>

<service id="app.provider.user_provider" class="%my_user_provider.class%">

<argument type="collection">
<argument key="github">githubId</argument>
</argument>

<call method="setGithubProvider">
<argument type="service" id="geekhub.user.github_provider" />
</call>

</service>

class UserProvider implements OAuthAwareUserProviderInterface
{
/**
* {@inheritDoc}
*/
public function connect(UserInterface $user, UserResponseInterface $response)
{
//I think this I get access token in request
}

/**
* {@inheritdoc}
*/
public function loadUserByOAuthUserResponse(UserResponseInterface $response)
{
}

и в шаблоне

 <a class="logo" href="{{ path('hwi_oauth_service_redirect', {'service' : 'github'}) }}">Gh</a>

но у меня есть ошибка

Unable to generate a URL for the named route "hwi_oauth_connect_service" as such route does not exist.

стек

in app/cache/dev/appDevUrlGenerator.php at line 259   -
public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH)
{
if (!isset(self::$declaredRoutes[$name])) {
throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name));
}
list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name];

Как я могу просто получить токен?

РЕШИТЬ

когда я добавляю маршрутизацию в пакетной маршрутизации, я решил эту проблему

hwi_oauth_security:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"prefix: /login

hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"prefix: /login

hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"prefix:   /login

Но теперь у меня есть другое, когда я подключаюсь к git hub, у меня есть вход в rou в действии hwi_oauth_connect_service: connectServiceAction и есть стандартный шаблон, как перезагрузить этот контроллер и действие и изменить шаблон ??
Или как после службы app.provider.user_provider сделать перенаправление в мою маршрутизацию?

2

Решение

Очень хороший пример реализации HWIOAuthBundle с FOSUserBundle
https://gist.github.com/danvbe/4476697

РЕДАКТИРОВАТЬ

HWIOAuthBundle — это пакет для OAuth, который обеспечивает документация для его конфигурации / использования.

Во-первых, вы должны установить брандмауэр, на котором будет использоваться HWIOAuth.
Это должно быть так же, как ваш

Затем вы должны зарегистрировать приложение Symfony2 в социальной сети, где вы хотите подключить своих пользователей.
Когда это будет сделано, в конфигурации пакета добавьте социальную сеть с учетными данными (идентификатор приложения + токен), предоставленными социальной сетью).
Увидеть настройка владельцев ресурса док.

После этого для аутентификации ваших пользователей в социальной сети и получения токена доступа вы должны подключить своего провайдера к HWIOAuthBundle.

Первая ссылка показывает, как заставить HWIOAuthBundle работать с FOSUserBundle в качестве провайдера пользователя.
Вы можете легко адаптировать его к вашим потребностям, установив собственного провайдера пользователя и пропустив шаг о FOSUB.

Есть много примеров, таких как HWIOAuthBundleByExample которые показывают, как использовать его с основным пользователем провайдера.
Еще один хороший: Добавление HWIOAuthBundle в ваш проект symfony2

Этот пакет в основном основан на конфигурации, также я не буду переписывать документацию пакета здесь.

EDIT2

В вашем маршруте должно быть следующее:

hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"prefix:   /login
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"prefix:   /connect
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"prefix:   /connect
# ... Add your other routes here
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector