2015-10-14 3 views
0

Я пытаюсь использовать OAuth с Google в ASP.NET MVC 5.редирект с URI Google с помощью ASP.NET MVC

В консоли разработчика Google, я ставлю для перенаправления URI:

www.mydomain.com/account/externallogincallback 

и думал, что это будет сделано. Но это не так.

я поставил:

www.mydomain.com/signin-google 

и это сработало!

Я попытался найти строку «signin-google» в своем проекте, но не смог найти ее нигде.

Может кто-нибудь сказать мне, что происходит? Почему это так? Благодарю.

+0

Если вы добавили в консоль Google URL-адрес, как вы хотите появиться в своем проекте MVC? и что вы имеете в виду, когда «это сработало», консоль google позволяет вам сохранить URL-адрес, или вы можете войти на свой сайт с учетной записью google? ведь я сомневаюсь, что это сработает. – SilentTremor

+0

@SilentTremor благодарит за ваш комментарий. Я должен был добавить signin-google в свою консоль разработчика Google вместо ExternalLoginCallback из контроллера учетных записей по умолчанию MVC. Он работал, значит, я смог войти в систему. К моему большому удивлению, и как я понимаю твое. Я хотел бы, чтобы кто-то объяснил мне эту проблему, так как я намерен добавить на мой сайт еще много поставщиков OAuth, и я хотел бы полностью разобраться в этом вопросе. – dsb

ответ

5

Мне слишком ленив, чтобы написать правильно отформатированный ответ, я поместил эти комментарии в код для себя, чтобы вспомнить, как решить эту проблему. Это не проблема, просто я никогда не удосужился правильно читать :) Но это то, что вы можете сделать, чтобы заставить ее работать. Там 2 варианта, как вы можете это сделать. Я пробовал оба, и оба варианта работают нормально. На данный момент я пошел с первым, это действительно не имеет значения. Вот мои комментарии в файле Startup.Auth.cs.

// My notes to resolve Google Error: redirect_uri_mismatch error 
// By default GoogleOAuth2AuthenticationOptions has CallbackPath defined as "/signin-google" 
// https://msdn.microsoft.com/en-us/library/microsoft.owin.security.google.googleoauth2authenticationoptions(v=vs.113).aspx 
// But the real path should be Controller/Action: for this application it is "/Account/ExternalLoginCallback" 

// There are 2 ways to define it properly: 
// 1) Add a new route in RouteConfig.cs that will map "/signin-google" into "/Account/ExternalLoginCallback": 
// routes.MapRoute(name: "signin-google", url: "signin-google", defaults: new { controller = "Account", action = "ExternalLoginCallback" }); 
// Remember, in Google Developers Console you must have your "/signin-google" redirect URI, since that is what your app sends to Google 

// 2) Completely overwrite built-in "/signin-google" path. 
// Owerwrite CallbackPath right here by adding this line after ClientSecret: 
// CallbackPath = new PathString("/Account/ExternalLoginCallback") 
// Remember, in Google Developers Console you must have "/Account/ExternalLoginCallback" redirect URI, since now that is what your app sends to Google 

app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() 
{ 
    ClientId = "xxxxxxxxxxxxxxxxxxxx", 
    ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxxx" 
});