我正在开发一个使用 Facebook 登录的网站。现在,我希望能够让它在我的生产环境以及我的开发环境中工作。
在 Facebook 上,我可以提供一个网站网址,Facebook 可以重定向到该网址。这在我的开发阶段效果很好,但现在我希望它既能在生产中工作,又能在开发我的解决方案时工作。
我想一种方法是使用我的域导航在本地 IIS 上运行我的应用程序并更改我的主机文件,但这并不是最简单的解决方案!?
-让它在两种环境中工作的最简单方法是什么?
我正在开发一个使用 Facebook 登录的网站。现在,我希望能够让它在我的生产环境以及我的开发环境中工作。
在 Facebook 上,我可以提供一个网站网址,Facebook 可以重定向到该网址。这在我的开发阶段效果很好,但现在我希望它既能在生产中工作,又能在开发我的解决方案时工作。
我想一种方法是使用我的域导航在本地 IIS 上运行我的应用程序并更改我的主机文件,但这并不是最简单的解决方案!?
-让它在两种环境中工作的最简单方法是什么?
更新:截至 2018 年,此设置的路径现在是产品 > Facebook 登录 > 设置 > 客户端 OAuth 设置,此答案的其余部分仍然有效。
有一个更好的办法。您只需将本地主机的有效回调 URL 添加到设置 > 高级 > OAuth 设置。
此方法允许您仍然拥有生产网站 URL,同时允许来自开发、登台、生产等的 oauth。
在我使用这个大约 6 个月后,我找到了一个非常有效的解决方案,基于其他两个答案。
在 Facebook 中,我添加了两个应用程序:
然后,在我的web.config
应用设置中,我有:
<!--Prod-->
<add key="_FacebookApiId" value="id"/>
<add key="_FacebookApiSecretId" value="secret_id"/>
<!--Dev-->
<add key="FacebookApiId" value="dev_id"/>
<add key="FacebookApiSecretId" value="dev_secret_id"/>
这当然是通过助手类阅读的。
然后它在生产和本地主机上无缝运行,我和我的团队都很高兴。
我也有同样的问题。
我发现的唯一解决方案是:
当您的应用程序处于开发模式时,Facebook 仅允许 localhost OAuth 重定向。这意味着您无法在生产中运行您的应用程序并执行本地开发测试。
相反,您需要创建应用程序的测试变体。前往https://developers.facebook.com并查看您的生产应用程序的仪表板。单击左上角的下拉菜单,然后选择Create Test App。
这将使用与您的生产应用程序几乎相同的设置填充测试应用程序。但是,它为您提供了一个新的应用程序 ID 和应用程序密码,因此您需要在开发模式下运行时切换这些设置(正如其他答案所建议的那样)。
以下是有关测试应用程序的更多信息:https ://developers.facebook.com/docs/apps/test-apps/
按照此答案中的建议,如果将移动 URL 设置为您的开发域(即本地主机)并将站点 URL 设置为您的生产域,它将起作用。
更新的方式。
在应用仪表板中,选择您的应用并转到产品 > Facebook 登录 > 设置。在客户端 OAuth 设置下,在有效 OAuth 重定向 URI 字段中输入您的重定向 URL 以成功授权。
访问https://developers.facebook.com/docs/facebook-login/web了解更多信息。