Google API и OAuth2

1

После примеров кода Google, как описано здесь.

Я воспроизвел свои образцы кода в собственном тестовом проекте (используя шаблон MVC 4 в Visual Studio Express 2013), я не могу запустить проект, потому что получаю эти ошибки:

Ошибка 1 Поскольку "Google.Apis.Sample.MVC4.Controllers.HomeController.IndexAsync(System.Threading.CancellationToken)" является асинхронным методом, который возвращает "Задача", ключевое слово return не должно сопровождаться выражением объекта. Вы намеревались вернуть "Задачу"? f:\users\sausages\documents\visual studio 2013\Projects\GooglePOC\GooglePOC\Controllers\googleAnalytics.cs 33 17 GooglePOC

Ошибка 2 Поскольку "Google.Apis.Sample.MVC4.Controllers.HomeController.IndexAsync(System.Threading.CancellationToken)" является асинхронным методом, который возвращает "Задача", ключевое слово return не должно сопровождаться выражением объекта. Вы намеревались вернуть "Задачу"? f:\users\sausages\documents\visual studio 2013\Projects\GooglePOC\GooglePOC\Controllers\googleAnalytics.cs 37 17 GooglePOC

Это блок кода, на который он жалуется:

using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Mvc;

using Google.Apis.Auth.OAuth2.Mvc;
using Google.Apis.Drive.v2;
using Google.Apis.Services;

using Google.Apis.Sample.MVC4;

namespace Google.Apis.Sample.MVC4.Controllers
{
    public class HomeController : Controller
    {
        public async Task IndexAsync(CancellationToken cancellationToken)
        {
            var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
                AuthorizeAsync(cancellationToken);

            if (result.Credential != null)
            {
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = result.Credential,
                    ApplicationName = "ASP.NET MVC Sample"
                });

                // YOUR CODE SHOULD BE HERE..
                // SAMPLE CODE:
                var list = await service.Files.List().ExecuteAsync();
                ViewBag.Message = "FILE COUNT IS: " + list.Items.Count();
                return View();
            }
            else
            {
                return new RedirectResult(result.RedirectUri);
            }
        }
    }
}
  • 0
    Task почти такая же, как void но в асинхронном контексте, поэтому может быть, что она жалуется на это. Task<ViewResult> ли он, если вместо этого вы Task<ViewResult> ?
Теги:
google-api

1 ответ

2
 public async Task<ActionResult> IndexAsync(CancellationToken cancellationToken)

работал на меня

  • 0
    Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его постом - вы всегда можете комментировать свои собственные посты, и, когда у вас будет достаточно репутации, вы сможете комментировать любые посты .
  • 0
    Ответом на вопрос, который работал для меня, было предоставление типа Task <ActionResult> (заменяющего Task <>) в определении метода, как я проиллюстрировал в строке кода. Мысль, которая ответила на вопрос (который я предположил, «как я могу заставить мой код работать?»).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню