Symfony 3 애플리케이션의 OAuth를 처리하기 위해 경비원을 씁니다.Early/Auto loaded Symfony 3 라우터에서 절대 URL을 생성하는 방법
내 서비스 중 하나에서 Twitter에 콜백 URL로 전송할 절대 URL을 생성해야합니다.
#services.yml
...
app.twitter_client:
class: MyApiBundle\Services\TwitterClient
arguments:
- %twitter_client_id%
- %twitter_client_secret%
- connect_twitter_check
- '@request_stack'
- '@router'
- '@logger'
app.twitter_authenticator:
class: MyApiBundle\Security\TwitterAuthenticator
arguments:
- '@app.twitter_client'
- '@logger'
로거는 디버깅을위한 일시적입니다. 이 로그에 $callbackUrl
를 출력 할 때
#TwitterClient.php service
...
use Monolog\Logger;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\RouterInterface;
class TwitterClient
{
/**
* TwitterClient constructor.
* @param string $identifier
* @param string $secret
* @param string $callbackUrl
* @param RequestStack $requestStack
* @param RouterInterface $router
* @param Logger $logger
*/
public function __construct(
string $identifier,
string $secret,
string $callbackUrl,
RequestStack $requestStack,
RouterInterface $router,
Logger $logger
) {
$callbackUrl = $router->generate($callbackUrl, [], RouterInterface::ABSOLUTE_URL);
$logger->info($callbackUrl);
...
}
그리고, 그냥 로컬 호스트 내가 다른 URL을 사용하여 접근하고, 비록 말한다.
http://localhost/connect/twitter/check
컨트롤러에서 동일한 작업을 수행하면 올바른 전체 URL이 출력됩니다.
#TwitterController.php
...
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\RouterInterface;
class TwitterController extends Controller
{
/**
* @Route("/connect/twitter")
* @return RedirectResponse
*/
public function connectAction()
{
/** @var RouterInterface $router */
$router = $this->container->get('router');
$callbackUrl = $router->generate('connect_twitter_check', [], RouterInterface::ABSOLUTE_URL);
/** @var Logger $logger */
$logger = $this->container->get('logger');
$this->container->get('logger')
->info($callbackUrl);
...
이 출력 :
https://dev.myapi.com:8082/app_dev.php/connect/twitter/check
dev.myapi.com
도메인 내 호스트 파일에 설정된 포인트는 쉽게 내 로컬 응용 프로그램을 구별 할 수 있도록, localhost로도 쉽게 통합 할 수 있도록 OAuth 서비스.