OAuth“验证码格式无效”
Posted
技术标签:
【中文标题】OAuth“验证码格式无效”【英文标题】:OAuth "Invalid verification code format" 【发布时间】:2011-12-07 04:04:01 【问题描述】:我有一个生产应用程序,偶尔我会在日志中看到这个错误。我似乎无法在我的最后复制它,所以似乎有一个用户在某个地方有一些特定的设置 /导致此问题的cookies / etc。我不知道......该日志表明,该用户被重定向到这个回调URL: “用户/认证/ Facebook的/回调代码= AQCayaAoFOruFgwbfg1D682j8DbxOt0CZYNH3Vv5RtYKlQgSzISyN8ygTn25W_RTl3fu35cS1-tl5ArZ9B_XylwORP0hGU6st8P6TyTYUzfiR1m0poaSRkX-KBeWiBvT6IUsm-Af0VJcUNTQPg-dM1F9y5CgJ2bTJEJqhCE9wYlvkUY3kguwcl3TQ48FTT4-PHA ///” P>
实际错误是:
RuntimeError: #<OAuth2::Response:0x1da7fae0 @error=#<OAuth2::Error: OAuth2::Error>, @options=:parse=>:query, @parsed="\"error\":\"message\":\"Invalid verification code format.\",\"type\":\"OAuthException\""=>nil, @response=#<Faraday::Response:0x1da8fa80 @on_complete_callbacks=[], @env=:response=>#<Faraday::Response:0x1da8fa80 ...>, :request_headers=>"Content-Type"=>"application/x-www-form-urlencoded", :body=>"\"error\":\"message\":\"Invalid verification code format.\",\"type\":\"OAuthException\"", :status=>400, :url=>#<Addressable::URI:0xed52bf0 URI:https://graph.facebook.com/oauth/access_token>, :request=>:proxy=>nil, :parallel_manager=>nil, :response_headers=>"expires"=>"Sat, 01 Jan 2000 00:00:00 GMT", "access-control-allow-origin"=>"*", "content-type"=>"text/javascript; charset=UTF-8", "connection"=>"close", "www-authenticate"=>"OAuth \"Facebook Platform\" \"invalid_code\" \"Invalid verification code format.\"", "date"=>"Thu, 13 Oct 2011 15:58:29 GMT", "content-length"=>"81", "cache-control"=>"no-store", "x-fb-rev"=>"457598", "x-fb-server"=>"10.65.13.60", "pragma"=>"no-cache", :ssl=>:ca_file=>"/etc/pki/tls/certs/ca-bundle.crt", :method=>:post>>
参数是:
"code"=> "AQCayaAoFOruFgwbfg1D682j8DbxOt0CZYNH3Vv5RtYKlQgSzISyN8ygTn25W_RTl3fu35cS1-tl5ArZ9B_XylwORP0hGU6st8P6TyTYUzfiR1m0poaSRkX-KBeWiBvT6IUsm-Af0VJcUNTQPg-dM1F9y5CgJ2bTJEJqhCE9wYlvkUY3kguwcl3TQ48FTT4-PhA///",
"action"=>"",
"controller"=>""
我知道如果我手动转到“users/auth/facebook/callback?code=blah”,它会触发同样的错误,因为回调代码参数显然是伪造的,但看起来没有任何可疑之处用户参数哈希中的实际代码——所以我想知道为什么它会是无效格式?
有其他人经历过吗?
【问题讨论】:
你找到解决办法了吗? 【参考方案1】:我认为以下链接提供了答案:http://developers.facebook.com/docs/authentication/#authenticating-users-in-a-web-application
您首先需要使用您的 client_id 和 redirect_uri 调用 https://graph.facebook.com/oauth/authorize。然后,这会将您重定向回 redirect_uri,并在查询字符串中使用验证码,您可以将其传递给您的 https://graph.facebook.com/oauth/access_token 调用(通过 code 参数)以交换 oAuth 访问令牌。
祝你好运! :)
【讨论】:
以上是关于OAuth“验证码格式无效”的主要内容,如果未能解决你的问题,请参考以下文章
OAuth2.0学习(4-12)spring-oauth-server分析 - 授权码模式验证过程