Мне нужна помощь в отношении mvc 5 с использованием провайдера входа в Google и получения некоторых данных YouTube. сейчас я думаю, что я немного перепутал. Я не новичок в mvc, но в функциях промежуточного программного обеспечения owin версии 5. ну и не опытный в реализации oauth 2.0.
Что я хочу:
- Войдите в мое приложение MVC5 через Google.
- Прочитайте некоторую информацию Youtube от вошедшего в систему пользователя.
Что я сделал до сих пор:
- Followed this Google OAuth 2.0 tutorial: Web applications (ASP.NET MVC).
- Installed Google.Apis.Auth.MVC via NuGet.
- Реализованы AppFlowMetadata и AuthCallbackController, как описано.
- Настроил URI перенаправления на «/AuthCallback/IndexAsync», как описано.
Реализовал
YoutubeController
со следующим действием только для вывода некоторых данных:public async Task<ActionResult> IndexAsync() { var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()) .AuthorizeAsync(cancellationToken); if (result.Credential == null) { return new RedirectResult(result.RedirectUri); } else { var service = new YouTubeService(new BaseClientService.Initializer { HttpClientInitializer = result.Credential, ApplicationName = "MyYoutubeApplication" }); var playlists = service.Playlists.List("contentDetails, snippet"); playlists.Mine = true; var list = await playlists.ExecuteAsync(); var json = new JavaScriptSerializer().Serialize(list); ViewBag.Message = json; return View(); } }
Итак, что это делает, когда при попытке доступа к /Youtube/IndexAsync
меня перенаправляют в Google, запрашивая мои учетные данные. при входе меня спрашивают, согласен ли я с разрешением, запрашиваемым приложением. после подтверждения меня перенаправляют на мою страницу, показывая мою /Youtube/IndexAsync
страницу с запрошенными данными. пока все хорошо, но это не совсем то, что я хочу.
что (я думаю) я сделал здесь, так это то, что я полностью обошел систему идентификации asp.net. пользователь не вошел в мое приложение, не говоря уже о регистрации.
я хочу, чтобы пользователь вошел в систему с помощью Google, зарегистрировался в моем приложении и предоставил доступ к своим данным YouTube. затем, находясь на определенной странице, получить данные из учетной записи пользователя YouTube.
Что я также пробовал:
- Following this ASP.Net MVC5 Tutorial
- This tutorial does not mention the NuGet package "Google.Apis.Auth.MVC" and talks something about a magic "/signin-google" redirect uri".
- Это также работает, но нарушает приведенное выше решение, жалуясь на неправильный uri перенаправления.
- При использовании этого подхода мне кажется неправильным снова вызывать AuthorizeAsync в
YoutubeController
, поскольку я уже должен быть авторизован.
Так что я ищу немного света в темноте, рассказывая мне, что я смешиваю все вместе :) Я надеюсь, что вопрос не так запутан, как я сейчас.