Instagram redirect-uri fails for localhost


Instagram redirect-uri fails for localhost

我正在编写一个PHP应用程序,使用他们的API在Instagram上获取我所有的照片。但是,让我感到困惑的是,我在托管服务器上运行该应用程序,它运行良好,而在本地运行的同一应用程序不起作用。

以下是有关应用工作流程的一些要点:

  1. 用户看到主页,系统将提示他"使用 Instagram 登录"
  2. 用户使用 Instagram 登录并授权应用。
  3. Instagram重定向用户。
  4. 然后,应用发出access_token请求并接收它。
  5. 使用该access_token,应用程序将发送对用户媒体的进一步请求
  6. 解析响应,现在将向用户提供指向图像的链接。

上述所有过程在我的托管服务器上运行良好,但在"步骤 3"失败,并将用户重定向到我的应用程序的主页。

问题是本地主机是redirect_uri。有没有人可以解决此问题以在本地使用该应用程序?

PS:我在Instagram上注册了两个独立的客户端:一个用于本地托管开发,另一个用于Web服务器。

另外,我尝试了本地隧道。也无济于事。

我知道这是一个非常非常古老的问题。 但对于那些到达此页面希望找到解决方案的人:

Instagram目前不允许在重定向URL中使用localhost或myvhost.test之类的东西,更重要的是它要求URL经过认证(https)。

所以我能找到的唯一可行的解决方案是使用 ngrok。 您应该从URL下载它,打开它并键入本地主机虚拟域名以及特定的端口号,例如ngrok http myLocalUrl.test/app 80,按回车键,它将为您提供两个临时公共链接。

它将保持有效,直到您关闭ngrok命令行。 您可以将链接定向到特定端口号,并将端口号定向到本地主机中应用程序的特定文件夹路径。如果您不理解我的提示,ngrok提供的教程非常简单。

我正在处理这个问题,试图使用NodeJS/Express开发Instagram应用程序。

我通过使用计算机的外部本地 IP 而不是您可以grep的本地主机来解决此问题。我假设你在一台 *nix 机器上,所以做一个非常简单(和粗糙)

$ ifconfig | grep inet

这将返回一些IP和MAC地址,其中之一是您的外部IP。然而,这很糟糕,因为这意味着每次切换IP时,您都必须使用Instagram更新应用程序的redirect_url,并更新任何依赖于它的代码。

值得庆幸的是,存在像no-ip这样的服务,基本上可以为您提供免费的DDNS服务,因此您只需向他们注册一个主机名,然后将其放入您的DEV env代码以及开发客户端的重定向URL中,您就可以开始了!