facebook登录流程

时间:2013-09-22 10:34:42

标签: facebook jsp facebook-graph-api servlets

在我的索引页面中,我有这个链接供我使用facebook进行身份验证。

<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中:

网址会显示http://xxx.herokuapp.com/test?code=xxx

由于我不希望同时显示所有200个结果,我一次只能加载20个结果。我有一个指向下一页<a href='/test?page=${page+1}&code=${code}'>Next Page</a>的链接,其中页面是当前页码1,代码是网址上的代码。

但是,当我点击“下一页”链接时,我会遇到此错误:

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

问题出在编码问题上吗?如果是这样,我应该如何编码网址中的代码以及我应该在哪里编码呢?在我的jsp页面或servlet里面?感谢。

1 个答案:

答案 0 :(得分:0)

您似乎尝试使用“下一页”链接中的相同“代码”再次获取access_token。 Facebook正在返回400个错误的请求错误。 facebook返回的“代码”应该只使用一次来获取access_token。一旦您拥有访问令牌,就可以将其用于所有进一步的Graph API调用。

如果您正在使用会话,则可以在会话中存储access_token并将其用于Graph API调用。否则,您可以在下一页链接中传递access_token(而不是代码):

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