Проблемы с веб-сайтом Azure и OAuth

#azure #oauth #google-api #google-drive-api #azure-web-app-service

#azure #oauth #google-api #google-drive-api #azure-web-app-service

Вопрос:

У меня есть мой проект MVC .NET, опубликованный на веб-сайте Azure.

Проблема Exception в том, что я получаю сообщение с надписью «Доступ запрещен», когда я создаю свой UserCredential :

 UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
            , scopes
            , userName
            , CancellationToken.None
            , new DataStore()).Resu<
  

Мои учетные данные консоли GoogleAPIs выглядят следующим образом ( Client Secret ):

clientSecret

Затем на моем портале Azure я настроил Authentication/Authorization :

Проверка подлинности портала Azure

Я уверен, что проблема связана с проблемой учетных данных, потому что, когда я пытаюсь это сделать на локальном хосте, все работает нормально. Проблема возникает при развертывании в Azure с использованием точно таких же учетных данных.

  • Я пропустил какой-либо шаг?
  • Есть ли проблема в моих учетных данных Google?
  • Должен ли я включить что-либо еще в Azure?

Ответ №1:

Для этого сценария я бы посоветовал вам попробовать вместо этого использовать GoogleAuthorizationCodeFlow. Подробные инструкции по использованию GoogleAuthorizationCodeFlow см. В этой статье. Я протестировал код и отобразил идентификатор пользователя в индексе страницы. Он отлично работает в веб-приложении Azure.

Вот HomeController:

     public class HomeController : AsyncController
    {
        public async Task<ActionResult> IndexAsync(CancellationToken cancellationToken)
        {
            var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
                AuthorizeAsync(cancellationToken);

            if (result.Credential != null)
            {
                ViewBag.Message = result.Credential.UserId;
                return View();
            }
            else
            {
                return new RedirectResult(result.RedirectUri);
            }
        }
    }
  

Вот результат:

введите описание изображения здесь