【问题标题】:Where to set the OAuth redirect_uri in ASP.NET 4.5 webforms application在 ASP.NET 4.5 webforms 应用程序中设置 OAuth redirect_uri 的位置
【发布时间】:2014-09-30 18:42:43
【问题描述】:

我在任何地方都找不到如何在 ASP.NET 4.5 网络表单应用程序中设置 OAuth2 redirect_uri。默认情况下,它设置为 localhost,当然我从 google 得到这个错误:

The redirect URI in the request: http://localhost:3884/signin-google did not 
match a registered redirect URI

这来自 Facebook:

Given URL is not allowed by the Application configuration.: One or more of the
given URLs is not allowed by the App's settings. It must match the Website URL
or Canvas URL, or the domain must be a subdomain of one of the App's domains.

我从我的网站域(而不是本地主机)收到此错误。

【问题讨论】:

    标签: c# asp.net .net webforms oauth-2.0


    【解决方案1】:

    我正在测试用于身份验证的内置外部登录逻辑,即使我的 Google API 凭据正确,我也会收到此错误。例如,重定向 URI 设置为:

    http://localhost:29405/signin-google

    奇怪的是,Google 身份验证的默认 CallbackPath 是“/signin-google”,但无论如何我都必须在 App_Start/Startup.Auth 中设置它,所以我添加了这一行并且它起作用了:

    CallbackPath = new PathString("/signin-google")

    所以...

    app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
            {
                ClientId = "YOUR CLIENT ID",
                ClientSecret = "YOUR CLIENT SECRET",
                CallbackPath = new PathString("/signin-google")
            });
    

    【讨论】:

    • 有人知道为什么需要这样做吗?它为我解决了这个问题,但我想知道为什么我们需要它。
    • 我遇到了完全相同的问题,我正在努力理解这个“signin-google”的来源。在我的项目中的所有文件中进行全局文本搜索未找到任何“signin-google”事件。
    • 如果可以的话,我会投 10 票。感谢您的正确和简单的修复!
    【解决方案2】:

    看了很多答案后,这对我有用:

    1. 启用 Google + API
    2. 默认重定向 URI 是 /signin-google,因此将其添加到授权重定向 URI。

    3. 将此添加到 RouteConfig 文件中:

      routes.MapRoute(name: "signin-google", url: "signin-google", 默认值: new { controller = "Account", action = "ExternalLoginCallback" });

    希望对遇到此问题的人有所帮助。

    【讨论】:

    • 金星先生,我忘了添加路线,这对我有帮助。
    • 我做了所有这些但我仍然得到同样的错误,也许你可以建议我做错了什么,这里是链接:stackoverflow.com/questions/35664250/…
    • 我在项目中的所有文件中对“signin-google”进行了全局搜索,但没有找到。这个“登录谷歌”来自哪里?它映射到什么,我没有看到这个重定向应该在回调中命中的任何控制器或操作。
    • @monstro 在用户进行身份验证后,谷歌默认将用户重定向回 yourdomain.com/signin-google,这不应该在您的代码中的任何地方找到。您可以遵循此答案并映射路线,因此当 google 将用户重定向回此 url 时,您的路由器将在内部将调用调度到您的 AccountController 中的 ExternalLoginCallback() 操作。如果您不知道在哪里为您的路线创建地图,我建议您在开始使用外部提供程序之前学习它的基础知识(恕我直言)。
    • 如果 MS 在 RouteConfig.cs 中添加该行但为我们注释掉它会很好。
    【解决方案3】:

    您必须启用Google+ API(默认不启用)。

    https://console.developers.google.com/project/projectId/apiui/apiview/plus

    默认 CallbackPath (/signin-google) 可以,但您必须将其添加到凭据 - OAuth ClientID 的 REDIRECT URIS 中(您可以替换默认的 /oauth2callback )。

    【讨论】:

    • 开启了,但还是不行不知道为什么
    【解决方案4】:

    还需要开启SSL ON

    我做了thenninger 和Sanchitos 发布的内容。

    但只有在我使用 SSL 运行我的 webApp 之后它才能工作。

    您可以在此处在项目属性中开启 SSL:

    并确保应用程序从正确的地址开始:

    【讨论】:

      【解决方案5】:

      我需要在路由中添加更多的路径,如下:

       routes.MapRoute(name: "signin-google", url: "localhost:44336/signin-google", defaults: new { controller = "Account", action = "ExternalLoginCallback" });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-30
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        • 2014-09-02
        相关资源
        最近更新 更多