使用本地DNS重新映射时,Google OAuth 2错误redirect_uri_mismatch

时间:2014-01-08 13:03:06

标签: oauth-2.0 google-oauth google-api-dotnet-client

当我在本地测试我的ASP.Net应用程序时,我使用名为DNSSpeeder的DNS工具接管我的机器的DNS进程。实际上,我可以在本地设置www.mysite.com并输入一个IP地址,如192.168.178.200,在我的浏览器中输入www.mysite.com,然后从我的本地IIS Web服务器启动。当我准备好投入生产时,我只是禁用DNSSpeeder,以便使用Internet的DNS来查找我的网站。

我遇到的问题是当我使用Google OAuth交换我的代码以获取令牌时。它返回错误的redirect_uri_mismatch。我不清楚谷歌服务器的实际线路是什么以及谷歌看到的URI是什么。 URI重定向确实与API控制台中的内容匹配,尽管这并未说明在离开DNSSpeeder后实际发送到Google服务器的内容。我试过Wireshark,但它没有显示任何内容。可能用https加密。我没有使用http://localhost:8080,而是尝试使用http://localhost:80以及http://192.168.178.200作为Javascript来源,但这没有帮助。

在本地测试以获得成功的令牌时,是否可以使用localhost以外的IP地址?

1 个答案:

答案 0 :(得分:0)

“在本地测试以获得成功的令牌时,是否可以使用localhost以外的IP地址?”

是的,这是可能的。我的设置是我在云端控制台中配置了两个重定向网址(http://www.mydomain.com/redirect和http:// dev .mydomain.com / redirect)。

然后我编辑/ etc / hosts(在linux上,Windose等价物在system32 \ drivers下),将dev.mydomain.com映射到127.0.0.1。

它运作得很好。您可能需要调整您的应用,以便重定向网址不是硬编码的,但实际上根据您的应用是否感知它是开发还是生产而变化。

需要注意的一点是,配置的重定向URL必须是与实际URL匹配的字符。所以要小心你有http和https两种变体,并且还要注意斜杠。如有必要,可以使用和不使用尾部斜杠进行配置。