当前位置: 首页 > 知识库问答 >
问题:

为本地移动应用程序和浏览器以及第三方设计REST API

戚勇
2023-03-14

我有一个应用程序的想法,它的后端既为本地移动应用程序服务,也为使用OAuth2的桌面浏览器服务。

在阅读了OAuth2参考之后,我意识到我只需要使用一个简单的Resource Owner Password Credentials Grant,因为这些客户机不是第三方客户机。换句话说,我只是使用OAuth2作为一个简单的登录协议,它可以同时为本机移动应用程序和浏览器提供服务,而不是为浏览器使用会话,为应用程序使用令牌(我宁愿使用OAuth2的密码授权来保持它的直截了当)。

然而,我想我会在将来为第三方发布一个API。我该如何为第三方以及上面提到的移动应用html" target="_blank">程序和浏览器服务呢?

我主要担心的是,我最终会得到一个具有两个不同角色的服务器:一个面向第三方,另一个面向它直接支持的移动应用程序和浏览器。我该如何着手做这件事呢?我想我可以使用一个authorization Code grant,将第三方应用程序与移动/浏览器应用程序分开,并且移动/浏览器应用程序将通过提供API中的整个范围资源而具有完整的功能。

共有1个答案

龚跃
2023-03-14

如果我要做您所描述的,我将使用两个API端点,它们可能具有类似的功能,但可以以更优化的方式为预期的客户机服务。

例如速率限制和其他安全方面,对于第三方来说是非常好的,但对于您的内部客户来说可能有点多余。

版本控制和向后兼容性对于您的内部客户端来说也可能与您的第三方非常不同。

但是,另一方面,您可以通过修改自己的系统并使用Oauth作用域来获得很多好处。

这可能更像是一个哲学上的建筑决策。但从长远来看,我肯定认为有很好的理由将内部API与外部API分开,因为数据可能不同,用法可能不同。

 类似资料:
  • 我想在Android上使用Appium来自动化下面的场景 首先在Chrome中打开一个网页。网页包含注册表单 填写表单,然后单击提交按钮 提交按钮通过uri打开我的本机应用程序(与我们通过点击链接市场打开Google Play的行为相同://...) 最后与应用程序交互 我可以为第1到3步实现自动化,但在第4步就失败了。 这对Appium有可能吗?有没有其他测试框架可以自动化这样的场景?

  • 我有一个原生的移动应用程序,并通过使用Appium驱动程序(AppiumDriver driver)自动运行,该驱动程序工作正常,并通过应用程序的一个功能,例如解锁帐户,向用户发送电子邮件,需要用户确认。 所以我已经找到了如何获得电子邮件中的链接,以及如何从发送电子邮件中获得URL。(保存在字符串变量中,例如“href”) 所以当自动化运行时,我在“信息”窗口中的移动应用程序中,通知用户我们已发送

  • 本文向大家介绍js判断浏览器版本以及浏览器内核的方法,包括了js判断浏览器版本以及浏览器内核的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js判断浏览器版本以及浏览器内核的方法。分享给大家供大家参考。具体实现方法如下: js判断是否移动端及浏览器内核 代码二 希望本文所述对大家的javascript程序设计有所帮助。

  • 我有两个应用程序需要通过深层链接进行通信:Flutter Web应用程序和iOS上的Flutter移动应用程序。 基本上,流程需要是我单击在移动浏览器上运行的Web应用程序中的一个按钮,然后应该触发移动应用程序启动。 我遵循了设置深度链接的指定说明,并有两个观察结果: 一切都在Android上完美运行。 如果我在任何其他iOS应用程序(日历,MS Teams等)中点击链接,它就可以正常工作。这使我

  • 问题内容: 堆栈溢出专家,您好,我确实有业务问题,想就如何解决这个问题获得一些答案/指标/想法。也许在其他主题中已经提到了这一点,但是到目前为止,我在互联网上进行搜索,但找不到直接的答案。 业务问题:我们的一位客户希望拥有一个基于Java Web的应用程序,但希望将其作为桌面应用程序启动。 也就是说,客户端希望在桌面上的某个位置双击图标,并启动一个浏览器窗口,该窗口指向Web应用程序的URL /上

  • 问题内容: 我在httpd.conf上设置了Expiry 这有助于浏览器缓存图像,字体文件,站点自己的css和js文件。但我的网站中也包含外部JS: Google Pagespeed Insights对上面的文件说: 在静态资源的HTTP标头中设置到期日期或最长期限,可以指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。 如何利用浏览器缓存此外部JS文件?有帮助吗? 问题答案: 确实是个烦人的