1

Umbraco 7.4.3 を使用しているプロジェクト (ASP.NET MVC 5) に取り組んでいます。oauth2 とともに Google アナリティクス API を実装しようとしています。Google ドキュメンテーション プラットフォームで入手できるサンプル コードを使用しました。Google アカウントで承認した後、正しい更新トークンを取得します。しかし、問題は、この更新トークンが URL で返され、コントローラーから空のビューに渡されないことです。ユーザーが自分のGoogleアカウントを承認した後、コントローラーがコードの実行を待機しないように感じているため、コントローラーは 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 プロジェクトでこのサンプル コードを試してみましたが、完全に動作します。

私を正しい方向に押し進めることができる人はいますか?

4

1 に答える 1

2

この問題を抱えている他の人にとって、解決策は実際には非常に簡単でした。

AuthCallbackController (/authcallback/indexasync) のカスタム ルートを作成したところ、すべて機能しました。Umbraco がデフォルトのルーティングを引き継ぐため、この URL に到達できず、authcallbackcontroller のアクションは実行されませんでした。

于 2016-04-26T09:39:33.617 に答える