Umbraco 异步表面控制器

Umbraco Async SurfaceController

我正在开发一个项目 (ASP.NET MVC 5),我正在使用 Umbraco 7.4.3。我正在尝试与 oauth2 一起实施 google 分析 api。我使用了 google 文档平台上提供的示例代码。使用我的 google 帐户授权后,我获得了正确的刷新令牌。但问题是这个刷新令牌在 URL 中返回并且没有被我的控制器传递到我的视图,它仍然是空的。我有一种感觉,在用户授权他或她的 google 帐户后,我的控制器不会等待执行它的代码,因此控制器不会为等待运算符而烦恼。

Link to the sample code

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

        if (result.Credential != null)
        {
            var service = new AnalyticsService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = result.Credential,
                    ApplicationName = "Analytics Dashboard"
                });

            // YOUR CODE SHOULD BE HERE..
            ViewBag.AccessToken = result.Credential.Token.AccessToken;
            ViewBag.RefreshToken = result.Credential.Token.RefreshToken;

            var list = await service.Management.AccountSummaries.List().ExecuteAsync(cancellationToken);
            ViewBag.Username = list.Username;

            for (int i = 0; i < list.TotalResults; i++)
            {
                ViewBag.WebsiteNames += list.Items[i].Name + "(" + list.Items[i].WebProperties[0].WebsiteUrl + ")";
            }

            return View("~/Views/Configboard.cshtml");
        }
        else
        {
            return new RedirectResult(result.RedirectUri);
        }
    }

PS:我已经在没有安装 Umbraco 的 ASP.NET MVC 5 项目中尝试了这个示例代码,它工作得很好。

任何人都可以将我推向正确的方向吗?

对于遇到此问题的其他人,解决方案实际上非常简单:

我为 AuthCallbackController (/authcallback/indexasync) 创建了一个自定义路由,并且一切正常。因为 Umbraco 接管了默认路由,所以此 URL 无法访问,因此未执行 authcallbackcontroller 的操作。