【问题标题】:Instagram API Redirect URI SSL for localhost without the Warning没有警告的本地主机的 Instagram API 重定向 URI SSL
【发布时间】:2020-04-09 09:10:14
【问题描述】:

Instagram API 需要重定向 uri 才能拥有 SSL 证书(HTTPS 连接)。

我将 Instagram API 用于我的移动应用程序,并且 OAuth 响应应首先调用应用程序中的过程。

我可以创建一个服务器来在本地(127.0.0.1)捕获这个调用,但是对于证书,我只能创建一个自签名的。问题是浏览器不信任它,并且最初警告用户潜在的危险,这对于用户体验来说是不可接受的。

我在 Stackoverflow 上看到了一些类似的问题,但很遗憾,我不明白他们是否解决了我的问题。

如何避免这个警告?

【问题讨论】:

    标签: facebook api ssl oauth instagram-api


    【解决方案1】:

    基本上,即使他们警告 https,您也可以使用 api。我遇到了同样的问题,但我只是尝试在 https 端口上运行应用程序,而不是在本地主机上运行 http 并且它有效。所以,答案是你只需要在 https 上运行你的应用程序。

    【讨论】:

    • 感谢您的回答!它确实有效。用户必须接受风险并通过单击相应按钮查看页面。不过,我建议您同意这是生产中不可接受的工作流程。用户不应收到我的应用程序可能试图窃取某些数据的警告。澄清一下,我确实在我的移动应用程序上运行了一个带有自签名 HTTPS 的服务器来捕获想要的回调。问题是这个 https 不受信任,因此发出警告。
    • 是的,我同意生产我们需要证书并且我安装了证书。但是对于本地开发,我们可以出售开发。
    • 我想我不清楚我的设置。我对开发没有问题,而是在生产中。本地主机并不意味着我的案例的开发阶段。生产中的移动应用程序将在移动设备上本地运行此“服务器”,以捕获来自 Instagram API 的回调。授权后,Instagram 将用户重定向到给定的 URL 以传递凭据。理论上,我可以改为提供我的主要在线后端端点,它有一个受信任的证书,但是我不知道这些凭据是谁的。所以我需要通过应用程序本身使用用户 ID 发送它。
    • 我建议您的案例无论如何都是一个网站,所以当 Instagram 将用户重定向到它时,他已经从缓存中识别出来了。但对我来说,我不能简单地将用户重定向到我在浏览器中的 API(并且 Instagram 授权发生在移动浏览器中),因为 API 确切地知道它是什么用户,因为用户是在应用程序中获得授权的,而不是在浏览器。但也许我试图以错误的方式做到这一点?
    • @RomanShirokov 我无法使用 instagram API,是否可以使用它并从 localhost 获取响应?有人可以帮我吗?
    【解决方案2】:

    我有针对我的具体情况的解决方案;我将 Flutter 用于移动应用程序。但总的来说,您也可以在其他情况下找到类似的东西。

    最初,我使用 url_launcher 包启动 Instagram 授权窗口。基本上,对于 iOS,它会在应用程序内启动 url,但在 Safari Web 视图中。通过这种方式,我无法控制此 Web 视图中的流程。所以,我想做的是在授权完成时通过在应用程序中运行本地服务器来捕获对127.0.0.1 的请求。它确实有效,但会因自签名证书引发安全隐患警告,因为 Instagram 要求使用 https127.0.0.1 不能拥有受信任的证书。

    相反,现在我使用 webview_flutter 在应用内启动 Instagram 授权窗口和自定义 WebView。它提供了更大的灵活性,但最重要的是我可以跟踪导航。所以现在,Instagram 将我的用户重定向到我网站上不存在的页面,该页面具有受信任的证书(但这并不重要),但前面提到的 WebView 可以检测到这个重定向,解析 URL 以检索想要的代码和通过关闭此 Web 视图来防止实际重定向。所以,最终,我在应用程序中获得了想要的代码,所以我可以将它发送到我的后端,并提供额外的用户 ID 参考。

    所以,基本上,工作流程如下所示:

    1. 用户点击应用中的按钮连接 Instagram 帐户;
    2. 应用启动自定义 Web 视图并打开 Instagram 授权页面;
    3. 授权后,Instagram 将用户重定向到一个虚拟 URL,并将所需代码作为查询参数;
    4. 自定义 Web 视图检测到此重定向;
    5. 从 URL 中检索代码;
    6. 关闭网络视图(返回主应用屏幕)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 2019-03-21
      • 2015-12-11
      • 2013-06-27
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多