1

我有一个带有数据库和某个对象的搜索引擎的网站 A,用户可以在我的网站上创建帐户,然后为这些对象添加评论。我需要使用类似插件的东西创建一个 api,这将导致在另一个网站 B 上拥有搜索引擎。

本来打算做fb或twitter插件的:想要使用我的api的开发者只需要在网站B上添加一行js,一行html,然后它就会加载插件。但我想知道如何组织它。

这就是我的猜测:我在我的网站 A 上创建了一个页面,将搜索引擎放在上面。我创建了一个js,它将在开发者页面(网站B)上的iframe中加载这个页面,在他添加的div下拥有我的插件。然后我实施 OAuth 2(使用提供者等,因此人们可以发布请求以更改我的数据库),并且网站 B 中的一个人将能够在网站 B 上对搜索引擎的对象发表评论。

实际上它似乎与fb评论插件过程相同,但是做所有这些东西似乎太复杂了。这是正确的方法吗?谁能详细说明我在实施过程中应该面临的问题?

4

5 回答 5

3

您需要开发一个体面的 API,它可以返回 JSON 格式的搜索结果(如果您想取悦所有人,还可以返回 XML)。这已经为其他开发人员提供了使用您网站功能的能力,这主要是后端工作。所以他们可以开发自己的小部件。

要将自己的小部件开发为搜索小部件,您不需要那么多,您只需要一个设置目标(可能是必需的元素)或/和一个初始化方法(对开发人员来说更灵活),然后将目标传递给该方法。

绑定搜索按钮,抓取术语搜索,调用您的 API,当您获得结果时显示它们或/并执行自定义回调将结果作为参数传递,灵活性)

如果你的 javascript 做得很好,你也可以在那里创建一个小 API,以便通过 javascript 使用你的 API。然后甚至可以轻松地将其移植到 jQuery 插件或类似的东西上。

提供 JSON 时,请始终记住为 API 设置标头以允许跨域或改为使用 jsonp。

于 2012-04-12T20:05:33.807 回答
1

您的问题暗示了一个架构方向,但是对于这样的选择,要求太宽泛了。我会先缩小你的要求。OAuth 2.0 可能有助于满足您的需求,但至少要问自己以下问题:

  • 需要保护哪些用户数据?
  • 需要哪些第三方数据访问权限?什么功能?
  • 如果您使用 OAuth 2.0,您准备好遵循仍在变化的规范吗?您愿意成为身份验证提供者吗?
  • 可以接受哪些服务器端语言/平台?
  • 还有哪些其他安全注意事项对您很重要?(如社交分享、第三方应用信任度...)
  • 您愿意在多大程度上依赖第三方工具?还是自己写?

我同意将您的设计建模为 FB、Twitter 或 Google 并不是一个坏主意,因为他们已经做过这类事情。

您可以查看新书OAuth 2.0 入门

于 2012-04-13T14:11:53.427 回答
0

如果您允许网站 B 在后台向网站 A 发出 POST 请求,OAuth 2 可能会有所帮助。

相反,如果您希望允许访问网站 B 的用户发表评论,那么带有指向网站 A 的表单的 iframe 就足够了。

于 2012-04-13T23:09:43.040 回答
0

以下是向用户提供自定义搜索的两种简单方法。

最简单的选择是做谷歌所做的事情——在你的网站上搜索将遵循一个简单的、定义明确的 API——这样

www.mysite.com/search?q=keyword1+keyword2

以 HTML 格式返回结果列表。

然后你会告诉你的用户包含一段 HTML:

<form action="http://www.mysite.com/search" method="get">
   <input name="q" type="text" value="Search">
</form>

这样做可以,尽管此时您可能希望通过更好的搜索选项、用于搜索表单的 javascript 包装器、用于返回数据的 JSON 或 XML 格式、安全性、更好地考虑所有这些的 API 来改进事物.

另一种方法是使用 javascript 并为数据提供回调工具,因此 URL:

www.mysite.com/js-search?q=keyword1+keyword2&callback=someHandle

将返回一个包含 JSON 数据的 javascript 文件,并在加载时调用“someHandle”。使用您的 API 的开发人员必须编写自己的方式来发出请求和处理程序。请记住,由于 XSS,查询可能来自您合作伙伴的服务器。最简单的方法可能是让您自己的搜索提供简单且有据可查的内容,以便其他人可以利用它。

于 2012-04-09T23:18:02.047 回答
0

更简单但不一定是最明智的选择是创建一些使用 JSONP 在您的网站上调用的 JS。

iFrame 不是 W3C 标准,尽可能避免使用它们。编写带有一些事件的 Javascript,这些事件将对您自己的服务器进行一些 JSONP 调用,并相应地以 Javascript 的形式返回结果,因此它能够与页面进行交互。

于 2012-04-14T04:30:41.437 回答