2013-09-22 2 views
0

내 인덱스 페이지에서 페이스 북으로 인증 할 수있는이 링크가 있습니다.페이스 북 로그인의 흐름

<a href="https://www.facebook.com/dialog/oauth?client_id=xxx&redirect_uri=http://xxx.herokuapp.com/test">Test</a> 

내 TestServlet 내부에서 그래프 API를 쿼리 할 수 ​​있도록 액세스 토큰을 인증하고 가져옵니다. 200 개의 결과 목록에 정보를 쿼리하고 저장합니다. 결과는 내 JSP 페이지 (test.jsp)로 전달됩니다. 내 test.jsp를 내부

: 나는 동시에 200 개 개의 결과를 표시하지 않으으로

URL 나는 한 번에 20 개 결과를로드, http://xxx.herokuapp.com/test?code=xxx

표시됩니다. 다음 페이지로 연결되는 링크가 있습니다 <a href='/test?page=${page+1}&code=${code}'>Next Page</a> 페이지의 현재 페이지 번호는 1이고 코드는 URL의 코드입니다. 나는 '다음 페이지'링크를 클릭하면

그러나, 나는이 오류를 공격합니다

java.io.IOException: Server returned HTTP response code: 400 for URL: https://graph.facebook.com/oauth/access_token?client_id=xxx&redirect_uri=http://xxx.herokuapp.com/test&client_secret=xxx&code=xxx 

이 문제가 인코딩 문제에 달려 있는가? 그렇다면 어떻게 URL에 코드를 인코딩해야하며 어디에 인코딩해야합니까? 내 JSP 페이지 또는 서블릿 내부? 감사.

답변

0

"다음 페이지"링크에서 동일한 '코드'를 사용하여 access_token을 다시 가져 오는 것 같습니다. 그리고 Facebook은 400 개의 잘못된 요청 오류를 반환하고 있습니다. 페이스 북에서 반환 된 "코드"는 access_token을 얻기 위해 한 번만 사용된다. 일단 액세스 토큰을 얻으면, 모든 추가 Graph API 호출에이를 사용하십시오.

세션을 사용하는 경우 access_token을 세션에 저장하고이를 Graph API 호출에 사용할 수 있습니다. 그렇지 않으면 다음 페이지 링크에서 access_token (코드 대신)을 전달할 수 있습니다.

<a href='/test?page=${page+1}&access_token=${access_token}'>Next Page</a> 
+0

나는 항상 코드를 추가로 쿼리해야한다고 생각합니다. 나는 네 길을 사용했는데 효과가 있었다. 너무 긴 문자열을 URL에 표시하는 것을 정말 좋아하지 않으므로 세션으로 변경되었습니다. 감사합니다. – Sky