回调函数

时间:2014-07-27 14:38:00

标签: php ruby callback oauth-2.0

所以在JavaScript中,我曾经能够让一个http请求启动一个回调,当AJAX发送一个响应回到我发送到服务器的一些数据时,成功地成为一个回调函数。我现在正在尝试使用Ruby的OAuth2 gem,我发现回调不一样;

我有一个网络服务器和Facebook应用程序设置,我有一个小的PHP脚本,将当前的URL(例如包括身份验证代码)写入文件,没问题。 Facebook应用中的所有设置都已设置,如果我将其放入浏览器中的URL:

http://graph.facebook.com/oauth/authorize?client_id=[my_client_id]&redirect_uri=http://localhost/oauth/callback/index.php

它成功重定向到该脚本,然后将授权代码写入文件,然后我可以使用该文件获取访问令牌。问题是我只能手动完成这个过程;在ruby中使用Net :: HTTP.get(URI(address))命令似乎不会启动php脚本。

Ayone有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不知道你为什么用javascript ajax请求发布你的历史记录,因为它与你的ruby脚本无关,顺便说一句,它甚至不使用回调方法/函数。使用回调函数只意味着您正在调用某个函数并将另一个函数作为参数传递。当我开始编程时,术语回调函数对我来说非常混乱,在我看来,该术语应该从术语中删除。

对于ruby脚本,当您在浏览器中手动输入URL时,需要使用类似Firebug的内容来查看浏览器发送到服务器的请求标头。如果你在ruby脚本中使用那些相同的标题,那么它应该可以工作,例如:

req['header1'] = 'hello'
req['header2'] = '10'

或:

headers = {
  'header1' => 'hello',
  'header2' => '10',
   ...
}

req = Net::HTTP::Get.new(uri.request_uri, headers)
http = Net::HTTP.new(uri.host, uri.port)
resp = http.request(req)

您可能在浏览器中设置了cookie,当您将请求发送到服务器时,浏览器会自动将其添加到请求标头中。您的浏览器可能会为请求添加数千个标题 - 其中许多标题与您的问题无关。如果您有耐心,可以尝试找出哪个标题导致您的ruby脚本请求出现故障。

另一种选择是使用mechanize gem,它将自动处理由ruby脚本发送的请求的cookie和重定向:

http://docs.seattlerb.org/mechanize/GUIDE_rdoc.html

(阅读Let's Fetch a Page部分;如果您使用的是ruby 1.9 +,请不要使用行require 'rubygems'