0

在我的索引页面中,我有这个链接供我使用 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,代码是 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 页面或 servlet 内?谢谢。

4

1 回答 1

0

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

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

<a href='/test?page=${page+1}&access_token=${access_token}'>Next Page</a>
于 2013-09-22T13:18:02.717 回答