2011-06-10 5 views
2

, 사용자의 정보 앱으로 연결 (signed_request) 을 통과하기 위해, 페이스 북 접속 캔버스 (예 : iframe이) 에 의해 응용 프로그램은 그들에게 POST 요청을 전송. 이 메커니즘은 here입니다. 레일 '트릭 피에르 올리비에 마르텔 에이 루비를 구현하기 심포니에서 적절한 장소 (서비스, 파일을 ...) 일 것입니다 무슨 편안한 유지하기 위해편안한 페이스 북 캔버스 Symfony2 응용 프로그램은

, 여기 descibes : http://blog.coderubik.com/2011/03/restful-facebook-canvas-app-with-ra ... , 예를 : 'signed_request' 매개 변수를 포함하는 모든 POST 요청을 GET 하나으로 변환 하시겠습니까? https://github.com/FriendsOfSymfony/RestBundle/blob/master/EventListener/RequestListener.php

답변

2

Stuck's answer에서 영감을 (! 감사)와 심포니 요리 책에서 :

# src/Acme/FacebookBundle/RequestListener.php 

namespace Acme\FacebookBundle; 

use Symfony\Component\HttpKernel\HttpKernelInterface; 
use Symfony\Component\HttpKernel\Event\GetResponseEvent; 

class RequestListener 
{ 
    public function onCoreRequest(GetResponseEvent $event) 
    { 
     $request = $event->getRequest(); 
     if ('POST' == $request->getMethod() && null !== $request->get('signed_request')) 
     { 
      $request->setMethod('GET'); 
     } 
    } 
} 

서비스 정의 :

# app/config/config.yml 

services: 
    acme.facebookbundle.listener.request: 
     class: Acme\FacebookBundle\RequestListener 
     tags: 
      - { name: kernel.listener, event: core.request, method: onCoreRequest } 
그것이 RESTBundle에서 이루어집니다처럼 당신은 RequestListener을 구현할 수
관련 문제