Umbraco Async SurfaceController



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

链接到示例代码

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 的操作。

相关内容

  • 没有找到相关文章

最新更新