我正在编写一个PHP应用程序,使用他们的API在Instagram上获取我所有的照片。但是,让我感到困惑的是,我在托管服务器上运行该应用程序,它运行良好,而在本地运行的同一应用程序不起作用。
以下是有关应用工作流程的一些要点:
- 用户看到主页,系统将提示他"使用 Instagram 登录"
- 用户使用 Instagram 登录并授权应用。
- Instagram重定向用户。
- 然后,应用发出access_token请求并接收它。
- 使用该access_token,应用程序将发送对用户媒体的进一步请求 将
- 解析响应,现在将向用户提供指向图像的链接。
上述所有过程在我的托管服务器上运行良好,但在"步骤 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中,您就可以开始了!