总是得到“验证验证码时出错”。请求access_token时

时间:2012-08-04 18:15:40

标签: facebook oauth facebook-oauth

好吧,我已尽力解决这个问题,但是,它仍然太烦人了。

我决定将OAuth用于服务器端身份验证。所以,我已经关注了Facebook文档,我已经完成了以下步骤。

  1. 创建一个链接,通过https://www.facebook.com/dialog/oauth?client_id={APP_ID}&redirect_uri=http://abc.com/nextStep.php
  2. 重定向人员登录Facebook
  3. 在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}
  4. 进行第2步时存在问题。页面显示:

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

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

1 个答案:

答案 0 :(得分:2)

两件事:

首先,我要说你错过了第一个网址中的state参数...你必须编写一个文档描述为SOME_ARBITRARY_BUT_UNIQUE_STRING的值 - 一些唯一的id / hash / what,没有人从外面就可以猜到。 (是的,该参数是可选 - 但是你应该仍然使用它,因为正如文档所说它有助于防止CSRF,因此是重要的如果您不知道CSRF的含义,请查阅。)

其次,在您的第二步中,您应该 将用户的客户端重定向到该地址,但是要进行服务器端调用相反,该端点。你将你的应用秘密放入这个URL(这不是错误,你必须) - 所以如果你在他的浏览器中调用该URL,用户很容易得到它...!

我建议你再次从https://developers.facebook.com/docs/authentication/server-side/开始,从顶部仔细阅读 - 如果你真的按照那里给出的指示,你几乎不会出错......