2012-02-24 61 views
-2

我正在使用第三方API(基于REST JSON)。在它中,他们需要一个回调url,这样我就可以获取返回的令牌。为HttpResponse设置回调

那么这是如何工作的?如果我给他们一个url,它是如何挂钩我的回调方法?我该如何指定方法,或者它的响应一旦返回......你如何连接所有这些?

因此,在我的HttpRequest的标题中,我添加了API所要求的“callbackUrl”,“ourCallbackUrlHere”的自定义值。

+0

您的意思是他们要求您在服务器上指定一个URL,以便验证一些数据,他们会回叫?所以不是你“抓”它,而是“推”它? – 2012-02-24 20:11:20

+0

为了发回一些数据是...发送一个令牌字符串给我们。我想他们会通过我们的回调网址发回一个令牌,所以http:// callbackurl/someToken = 234#@ Gas643g,因为我需要在返回到我们的回调网址时以某种方式获取该值。这就是我不知道那个作品..我怎么抓住它?如果我得到回应,那么确定这个回调网址是如何被使用的? – PositiveGuy 2012-02-24 20:44:43

+0

查看http://tools.ietf.org/html/rfc5849并搜索“前一个请求中客户端 提供的回调URI”。因此,主机会发送回我http:// ourcallbackUrl?oauth_token = hh5s93j4hdidpola&oauth_verifier = hfdp7dh39dks9884作为示例 – PositiveGuy 2012-02-24 20:48:06

回答

1

我认为术语'回调'可能会造成一些混淆。他们正在谈论一个“回调URL”,因为他们正在调回服务器上的URL。但是,这并不意味着您的服务器的初始请求代码应该具有任何类型的“回调”来处理它。

你会做什么是实现一个处理程序 - 也许是一个ASHX通用处理器 - 即拉QueryString很重视他们的服务器发送,并验证其对你在你的数据库是什么,采取适当的行动。

因此,将会有两个页面/处理程序:通过REST发送初始API请求的接收方,以及接收第三方发出的“回调”的接收方请求。但是你的不是在你的第一个处理程序中实现一个回调函数(如,.NET delegate)。

+0

好吧,那么如何同步第一个处理程序和第二个回收令牌? – PositiveGuy 2012-02-24 21:25:14

+0

我不认为我需要2。包装项目中的服务器端代码封装了第三方API,因此我们可以使用它构建的是发出初始请求。我想我只需要一个处理程序来接收回调(令牌通过我们指定给他们的url)。 – PositiveGuy 2012-02-24 21:27:36

+0

你不会同步它们。推迟你对第一个处理程序采取的行动;除非你从第三方获得令牌,否则不要采取“官方”行动。这是在面向用户的网站上完成的吗?所以用户做了一些触发API调用的事情?如果是这样,你应该实现某种页面,说:“我们正在处理...”,也许自动刷新到一个状态URL,以检查令牌是否已经回来。这意味着你需要在某个地方存储状态(* not *在会话中,因为回调将在不同的会话中) – 2012-02-24 21:28:29