我正在向我的MVC应用添加外部登录。我已经成功添加了“使用Facebook登录”,但是Google遇到了问题,因为我的回调端点收到了
访问被拒绝
这是我所做的:
我在这里缺少什么?
答案 0 :(得分:1)
只需要与我在一个项目上的比较即可:
[my website url]/signin-google
(如果您不严格使用HTTP和https版本,请不要忘记在此处添加http和https版本。这对我有用。我要检查的唯一另一件事是,启动时具有客户端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