此類應(yīng)用的開(kāi)發(fā)人員習(xí)慣于在清單文件中指定(盡管不一定)其應(yīng)用可顯示的不同界面,并指定要加載的 URL 或要運(yùn)行的代碼。這種情況仍然很常見(jiàn),只是清單符合較新的 API 標(biāo)準(zhǔn)(基本上是 JSON 文件,而不是舊的 XML)。

"location": {
"support": {
"ticket_sidebar": "assets/iframe.html"
},
"chat": {
"chat_sidebar": "assets/chat_iframe.html"
}
}

本質(zhì)上,平臺(tái)提供商必須讓開(kāi)發(fā)人員知道他們?cè)?UI 中的位置,并指定相應(yīng)地加載什么內(nèi)容。

更具創(chuàng)造性:API 與界面交互

iframe 提供了一定的安全性,因?yàn)樗鼈儫o(wú)法與父頁(yè)面進(jìn)行太多交互。也就是說(shuō),沒(méi)有父頁(yè)面的許可。當(dāng)我們希望合作伙伴在框內(nèi)執(zhí)行更多操作,而不僅僅是在我們的頁(yè)面中顯示某些內(nèi)容時(shí),我們會(huì)提供額外的 API 來(lái)獲取有關(guān)嵌入合作伙伴應(yīng)用的頁(yè)面的信息,甚至通過(guò)使用觸發(fā) UI 中某些內(nèi)容的函數(shù)與頁(yè)面進(jìn)行交互。

例如,Gmail 附加組件允許應(yīng)用程序查看發(fā)件人的信息和郵件文本:

示例應(yīng)用:Gmail 的 Trello 插件
// Setting the access token with a gmail.addons.current.message. readonly
// scope also allows read access to the other messages in the thread.
var thread = message.get Thread () ;
var threadMessages = thread.getMessages () ;
// Using this link can avoid the need to copy message or thread content
var threadLink = thread.getPermalink();

使用 SDK 讓開(kāi)發(fā)更簡(jiǎn)單

平臺(tái)可以通過(guò)在這些 API 之上提供額外的工具來(lái)簡(jiǎn)化嵌入式集成。首先,Javascript 庫(kù)可以讓合作伙伴用更少的代碼調(diào)用以嵌入為中心的 API。這是嵌入框架最常見(jiàn)的功能之一,通常被認(rèn)為是在允許基本 iframe 之后要構(gòu)建的下一個(gè)功能。

Zendesk、Trello、Shopify和Twitch只是這些客戶端庫(kù)的幾個(gè)例子。在提供 iframe 功能平臺(tái)時(shí),它們非常常見(jiàn),幾乎是意料之中的事情。

這些庫(kù)還有助于講述一個(gè)故事,即構(gòu)建完全在客戶端運(yùn)行的簡(jiǎn)單應(yīng)用程序。與界面或核心平臺(tái)后端交互的 API 仍然可以從前端制作,由 JavaScript API 庫(kù)支持。然后,合作伙伴可以使用 HTML、CSS 和前端 JavaScript 創(chuàng)建簡(jiǎn)單的應(yīng)用程序。

事實(shí)上,此類應(yīng)用程序可以輕松安全地托管在平臺(tái)本身上,而不是由第三方開(kāi)發(fā)人員托管。雖然當(dāng)今許多平臺(tái)都托管合作伙伴的服務(wù)器代碼,但托管客戶端代碼是一個(gè)簡(jiǎn)單的開(kāi)始。

服務(wù)器端要求

有些平臺(tái)不僅允許通過(guò)完全在客戶端操作輕松構(gòu)建小型應(yīng)用程序,但有時(shí)這根本不可能。在企業(yè)軟件中,合作伙伴當(dāng)然會(huì)托管和運(yùn)行后端操作。即使在 K-12 教育技術(shù)中,我也管理了一個(gè)需要許多 API 調(diào)用在服務(wù)器到服務(wù)器之間進(jìn)行的平臺(tái)。合作伙伴在線提供數(shù)學(xué)和語(yǔ)言游戲,供學(xué)生嘗試,并將成績(jī)提交到課堂成績(jī)冊(cè)。提交成績(jī)的調(diào)用必須在服務(wù)器端進(jìn)行,否則精通技術(shù)的學(xué)生可能會(huì)找出 API 調(diào)用并在英語(yǔ)課上作弊。

Twitch 專注于這種場(chǎng)景,在客戶端和服務(wù)器端庫(kù)之上提供了附加工具。

安全相關(guān)事項(xiàng):API 范圍

為了實(shí)現(xiàn)這些更深層次的集成,需要專門(mén)為這些嵌入式集成設(shè)計(jì)的新 API 功能。新 API 帶來(lái)了更多責(zé)任。這些 API 端點(diǎn)的作用域與其他 API 的工作方式往往大不相同。

對(duì)于與 Google Drive 連接的移動(dòng)應(yīng)用程序,可能需要完全訪問(wèn)用戶的 Google Drive 帳戶,以便創(chuàng)建文件夾、上傳文件、共享文件夾等。但是,如果嵌入 Google Drive 中僅與一個(gè)文件交互,這有必要嗎?對(duì)于 Google Drive,最好將集成限制為僅與用戶選擇的文件一起使用。

Google 指南

Google Drive 一直在更新其 API,以便僅用于文件的集成不會(huì)請(qǐng)求超出其需求的范圍。現(xiàn)在,每次用戶將文件啟動(dòng)到第三方服務(wù)時(shí)都可以創(chuàng)建新的令牌,從而使第三方只能訪問(wèn)用戶剛剛啟動(dòng)的文件。

Pixlr 編輯器

如何跳過(guò) API 身份驗(yàn)證

iframe、API 和庫(kù)看起來(lái)足夠簡(jiǎn)單,但請(qǐng)記住,可用性很重要。平臺(tái)經(jīng)常會(huì)忽略一個(gè)點(diǎn)。這是一個(gè)常見(jiàn)的點(diǎn),公司經(jīng)常需要后續(xù)更新:身份驗(yàn)證體驗(yàn)。

如何讓合作伙伴能夠訪問(wèn)用戶的帳戶?最新的 Oauth 標(biāo)準(zhǔn)是最有可能的解決方案,但它往往沒(méi)有得到應(yīng)有的實(shí)施。平臺(tái)經(jīng)常將用戶引導(dǎo)出其界面,迫使他們轉(zhuǎn)到合作伙伴,登錄,再次通過(guò) Oauth,才能訪問(wèn)集成。

在 AppDynamics 中

您的用戶體驗(yàn)不必如此!從流程來(lái)看,用戶更有可能在集成目錄中找到這些應(yīng)用。找到后,他們將(或可以)登錄到帳戶 – 準(zhǔn)備批準(zhǔn)應(yīng)用。在這里,讓他們簡(jiǎn)單地“添加”應(yīng)用,然后在您的界面上通過(guò)正確的 Oauth 提示,怎么樣?

Wix 商店

當(dāng)然,許多合作伙伴也需要訪問(wèn)他們的 API。這可以由應(yīng)用程序在首次啟動(dòng)時(shí)處理,或者理想情況下,通過(guò)同一體驗(yàn)上的重定向來(lái)處理。在清晰的“安裝”流程中,一次性體驗(yàn)即可讓用戶開(kāi)始使用。

Wix:添加集成后一次性設(shè)置

合規(guī)性注意事項(xiàng)

一些企業(yè)公司不愿啟動(dòng) iframe 集成,并指出他們正在嘗試實(shí)現(xiàn) HIPAA 和 FINRA 合規(guī)性,這需要集成合作伙伴服務(wù)。一些平臺(tái)主機(jī)告訴我,出于這個(gè)原因,iframe 是不可能的。

Salesforce 遇到了這種情況,但采取了一種簡(jiǎn)單的方法,即為需要 HIPAA 的客戶禁用所有集成。顯然,有辦法解決合規(guī)性問(wèn)題,同時(shí)仍然允許第三方嵌入式集成。

除了完全阻止某些客戶的合作伙伴之外,還有更自由的選擇。或者,平臺(tái)提供商可以標(biāo)記哪些集成服務(wù)具有某些認(rèn)證。當(dāng)客戶需要 HIPAA 認(rèn)證時(shí),所有未經(jīng)認(rèn)證的 Hipaa 集成都無(wú)法訪問(wèn)該帳戶。

如果行業(yè)重視合規(guī)性,那么在平臺(tái)的早期規(guī)劃階段就需要了解這一點(diǎn)。好消息是,這個(gè)問(wèn)題很容易解決。

超越 iFrame

在考慮用例并應(yīng)用良好的設(shè)計(jì)原則后,iframe 可以實(shí)現(xiàn)非常引人注目的平臺(tái)。一旦與正確的 API 和實(shí)施規(guī)則相結(jié)合,這樣的平臺(tái)就可以很好地適應(yīng)客戶,并擴(kuò)展到數(shù)百個(gè)集成。

盡管過(guò)去曾有過(guò)無(wú)數(shù)的掙扎和傷痕,但只要正確使用,iframe 仍然很有價(jià)值。盡管如此,它們并不總是最好的解決方案。在了解了 iframe 和良好嵌入框架的設(shè)計(jì)原則之后,了解平臺(tái)在嘗試其他體驗(yàn)和技術(shù)時(shí)還有哪些其他選擇是值得的。

原文鏈接:https://www.moesif.com/blog/technical/api-development/Fall-and-Rise-of-Embedded-Plugins-Part-3/

上一篇:

24 年最快的 REST API Web 服務(wù)器:Node.js、Go、Rust 和 C# (.NET) 基準(zhǔn)測(cè)試

下一篇:

測(cè)試MVP:測(cè)試您想法的17種最佳方法
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門(mén)場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)