我正在做一个项目(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 的操作。