Google登录返回访问被拒绝

时间:2019-10-16 04:25:00

标签: asp.net-mvc google-signin google-oauth2

我正在向我的MVC应用添加外部登录。我已经成功添加了“使用Facebook登录”,但是Google遇到了问题,因为我的回调端点收到了

  

访问被拒绝

这是我所做的:

  1. console.developers.google.com中,我已将URL添加到授权的JavaScript来源授权的重定向URI 中,并且启用了 Google + API strong>
  2. 我已将我的GoogleClientId和GoogleClientSecret添加到我的启动文件中
  3. 我已经将Microsoft.Owin.Security.Google更新为最新版本4.0.1

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

只需要与我在一个项目上的比较即可:

  • 启动-使用客户端ID和密码初始化(请参见下文)
  • 在Google控制台上:
    • JS的起源是空白的
    • 授权的重定向URI:[my website url]/signin-google(如果您不严格使用HTTP和https版本,请不要忘记在此处添加http和https版本。
    • Oauth同意屏幕-授权域-添加使用的域名(此处无需http / s)
    • API-Google+ API

这对我有用。我要检查的唯一另一件事是,启动时具有客户端ID和密码的值……例如,如果它无法通过您使用的任何配置设置找到它们。

我的创业公司:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddAuthentication().AddGoogle(googleOptions =>
    {
        googleOptions.ClientId = Configuration["YOUR-CLIENT-ID"];
        googleOptions.ClientSecret = Configuration["YOUR-SECRET"];
        googleOptions.Scope.Add("...I have some additional scopes here...");
        googleOptions.SaveTokens = true; //additional to my setup
        googleOptions.AccessType = "offline"; //additional to my setup
        googleOptions.AuthorizationEndpoint += "?prompt=consent"; //additional to my setup
    });
    ...
}

答案 1 :(得分:0)

我已经设法通过实现自己的提供程序来解决此问题。

首先,我去过github以获取Microsoft.Owin.Security.Google的文件

我已将这些文件添加到我的项目中,更改了userInfoEndPoint:

//private const string UserInfoEndpoint = "https://www.googleapis.com/plus/v1/people/me";
private const string UserInfoEndpoint = "https://www.googleapis.com/userinfo/v2/me";

这实际上是有帮助的,因为您可以添加/删除所需的任何范围/字段并确定声明将具有的类型。就我而言,我已经编辑了每个处理程序(facebook,google,linkedin和microsoft),以相同的方式填充声明。因此,如果我想要用户的名字,那么我知道无论提供者是什么,声明类型都将是ClaimTypes.GivenName。希望这是有道理的:D