2012-05-28 2 views
0

사용자가 Facebook 계정을 사용하여 로그온 할 수있게 해주는 앱을 개발 중입니다. 나는 RestFB (restfb.com)를 사용하고 있습니다. 지금까지, 나는 문제없이 실행 아래의 코드를 사용하여 페이스 북 인증 API에 액세스 할 수있어 :JSF Facebook 인증

try { 
FacesContext.getCurrentInstance().getExternalContext().redirect(FB_URL); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 

FB_URL 사용자 인증 후 제대로 리디렉션되고 내 REDIRECT_URL가 포함되어 있습니다. 인증은 코드를 반환합니다. ACCESS_TOKEN에 대한 요청을 보내기 위해 반환 된 코드를 사용하고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 반환 URL에 실행할 메서드를 포함시키는 것입니다. 이 메소드는 페이스 북에 대한 요청이 코드 응답과 함께 반환되는 즉시 실행됩니다. 또한 URL에서 액션 메소드를 실행할 수있는 경우에만 가능하다는 것을 알 수 있습니다. 필자는 필터 사용에 관해 읽었지만 아직 명확하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

이렇게하는 방법을 찾았습니다. 사용

<f:metadata> 
    <f:viewParam name="code" value="#{loginBean.fbCode}" /> 
</f:metadata> 

LoginBean의 setFbCode가 실행됩니다. 그럼 아래 그림과 같이 내가 액세스 토큰을 검색하는 데 사용하는 URL이 코드를 통합 :

if(this.fbCode != "") { 
     TOKEN_URL = TOKEN_URL + fbCode + "&access_token="; 
     System.out.println("FB Code = " + fbCode); 
     try { 
         FacesContext.getCurrentInstance().getExternalContext().redirect(TOKEN_URL); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

그리고 토큰을 검색 할 수 : 시도-catch 블록에 둘러싸여 물론

URL url = new URL(TOKEN_URL); 
String token = IOUtils.toString(url.openStream()); 
this.fbAccessToken = token; 

. Apache의 IOUtils를 사용하여 토큰을 문자열로 읽습니다.