Instagram redirect-uri因localhost而失败

时间:2012-08-13 02:08:27

标签: php localhost oauth-2.0 instagram

我正在编写一个PHP应用程序,使用他们的API来获取Instagram的所有照片。然而,让我感到困惑的是,我在我的托管服务器上运行应用程序它运行得很好,并且在本地运行的相同应用程序无效。

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

  1. 用户会看到主页,系统会提示“登录Instagram”
  2. 用户使用Instagram登录并授权该应用。
  3. Instagram重定向用户。
  4. 然后,应用程序发出access_token请求并接收它。
  5. 使用access_token,该应用程序将发送进一步的用户媒体请求
  6. 解析响应,现在向用户提供指向图像的链接。
  7. 上述所有过程在托管服务器上运行正常,但在“步骤3”失败。并将用户重定向到我的应用程序的主页。

    问题是localhost是redirect_uri。有没有人有解决这个问题的方法来在本地使用该应用程序?

    P.S:我在Instagram上注册了两个不同的客户:一个用于本地托管开发,另一个用于Web服务器。

    另外,我尝试过localtunnel。也没有帮助。

2 个答案:

答案 0 :(得分:1)

我正在尝试使用NodeJS / Express开发Instagram应用程序。

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

$ ifconfig | grep inet

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

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

答案 1 :(得分:0)

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

instagram当前不允许在重定向URL中使用本地主机或myvhost.test之类的东西,而且它需要对该URL进行认证(https)。

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

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