创建一个插件,在另一个网站上添加我的网站功能。

3
我有一个带数据库和一些对象搜索引擎的网站A,用户可以在我的网站上创建账户,然后添加对这些对象的评论。 我需要创建一个API,类似于插件,它将导致另一个网站B上有搜索引擎。
我计划像FB或Twitter插件一样操作:想要使用我的API的开发者只需要在网站B上添加一行JS代码和一行HTML代码,然后就可以加载插件。但我不确定如何组织它。
这是我猜测的方式:我在我的网站A上创建一个页面,放置搜索引擎。我创建一个JS文件,在开发者的页面(网站B)的div下方以iframe的形式加载此页面。然后我实现OAuth 2(使用提供程序等),因此人们可以进行POST请求来更改我的数据库,并且在网站B上的人将能够在搜索引擎的对象上发布评论。
实际上,这似乎与FB评论插件过程相同,但是看起来要做所有的事情都太复杂了。这是正确的方法吗?有没有人能详细说明我在实施过程中可能遇到的问题?

5
你的问题非常广泛,能否更具体一些?你尝试过什么?遇到了什么瓶颈?你需要支持哪些浏览器?你的数据库/网站A有多可扩展(请注意,任何这样的系统都会使你面临DDos攻击)? - undefined
4
你尝试过挥手而不是编写代码吗? - undefined
@Yahia 任何网络浏览器(桌面版而非移动版)我已经尝试过这个:创建了一个JSON API来访问我的数据,无论是否受保护(OAuth2)。我想知道是否可以简单地提供一个“开箱即用”的插件给我的搜索引擎,而不是告诉用户通过API编写一些东西。 - undefined
@tahir 这种类型的“插件”需要进行一些跨域操作,而跨域操作只能通过 JSONP 实现,而 JSONP 本身不是非常安全的... 而且根据浏览器/安全设置的不同,这可能会起作用或者不起作用!再次强调:你具体的问题是什么? - undefined
5个回答

4
您需要开发一个良好的API,可以返回JSON格式的搜索结果(如果您想取悦每个人,也可以返回XML格式)。这样可以让其他开发者使用您的网站功能,这主要是后端工作。因此,他们可以开发自己的小部件。
要开发自己的小部件作为搜索小部件,您不需要太多,只需要设置目标(可能是必需元素)或/和初始化方法(更灵活的开发人员),然后将其传递给目标即可。
绑定搜索按钮,获取搜索词条,调用您的API,当您获得结果时,显示它们或/和执行自定义回调并将结果作为参数传递(灵活性)。
如果您的JavaScript编写得很好,您还可以在其中创建一个小型API,以便通过JavaScript方便地使用您的API。然后,甚至可以轻松地将其转换为jQuery插件或类似的东西。
在提供JSON时,请始终记住为您的API设置标题,以允许跨域或选择jsonp。

1

你的问题涉及到架构方向,但要求过于宽泛,无法做出选择。我建议先缩小你的需求范围。OAuth 2.0 可能有助于满足你的需求,但请至少考虑以下几点:

  • 需要保护哪些用户数据?
  • 需要访问哪些第三方数据?需要哪些功能?
  • 如果你选择 OAuth 2.0,你是否准备遵循一个仍在变化的规范?你是否愿意成为认证提供者?
  • 哪些服务器端语言/平台是可接受的?
  • 你还有哪些其他安全考虑因素?(例如社交分享、第三方应用程序信任级别等)
  • 你愿意多大程度上依赖第三方工具?或者自己编写代码?

我同意,以 Facebook、Twitter 或 Google 为模板设计不失为一个好主意,因为他们已经做过这样的事情。

你可以看一下新书 Getting Started with OAuth 2.0


0
以下是使自定义搜索对用户可用的两种简单方法。
最简单的选择是像Google一样做-您网站上的搜索将遵循一个简单明确的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数据和对"someHandle"的调用的JavaScript文件。使用您的API的开发人员需要编写自己的请求方式和处理程序。请记住,由于XSS的原因,查询可能来自合作伙伴的服务器。最简单的方法可能是提供简单且文档完备的搜索功能,以便其他人可以利用它。


0

只有在您允许网站B在后台向网站A发出POST请求时,OAuth 2才会有帮助。

如果您想允许访问网站B的用户发表评论,则指向网站A的包含表单的iframe就足够了。


0

一个更简单的方式,但不一定是明智的选择,是创建一些使用JSONP调用你的网站的JS代码。

如果可能的话,请尽量避免使用iFrames,因为它们不符合W3C标准。可以编写一段包含一些事件的Javascript代码,通过JSONP调用你自己的服务器,并以相应的Javascript形式返回结果,这样就可以与页面进行交互。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接