0

好吧,我已经尽我所能来尝试解决这个问题,但是,它仍然太烦人了。

我决定将 OAuth 与服务器端身份验证一起使用。因此,我遵循了 Facebook 文档,并完成了以下步骤。

  1. 创建一个链接,将人们重定向到通过以下方式登录 Facebookhttps://www.facebook.com/dialog/oauth?client_id={APP_ID}&redirect_uri=http://abc.com/nextStep.php
  2. 在 nextStep.php 中,将人们重定向到https://graph.facebook.com/oauth/access_token?code={CODE GENERATED BY FACEBOOK}&client_id={APP_ID}&redirect_uri=http://abc.com/thirdStep.php&client_secret={APP_SECRET}

进行步骤 2 时存在问题。页面显示:

{
   "error": {
      "message": "Error validating verification code.",
      "type": "OAuthException",
      "code": 100
   }
}

我已经用谷歌搜索了很多时间。有些人建议在redirect_uri 中添加一个斜杠,但它不起作用。我应该怎么办?以及获取access_token后如何获取用户信息?谢谢你的帮助。

4

1 回答 1

2

两件事情:

首先,我会说你state在你的第一个 URL 中缺少参数......你必须组成一个文档描述为 SOME_ARBITRARY_BUT_UNIQUE_STRING 的值——一些唯一的 id/hash/whatever,外界没有人能够猜到. (是的,该参数是可选的——但无论如何你都应该使用它,因为正如文档所说,它有助于防止 CSRF,因此是一项重要的安全措施。如果你不知道 CSRF 是什么意思,请查一下。)

其次,在您的第二步中,您不应将用户的客户端 重定向到该地址,而应改为对该端点进行服务器端调用。您正在将您的应用程序密码放入此 URL(这不是错误,您必须这样做)——因此,如果您在浏览器中调用该 URL,用户将很容易获得它……!

我建议您再次从https://developers.facebook.com/docs/authentication/server-side/开始,从顶部仔细阅读 - 如果您真的按照那里给出的说明进行操作,几乎不会出错-一个……</p>

于 2012-08-04T19:54:35.643 回答