AuthCallbackController継承クラスの追加
次に、ASP.NET MVC(バージョン5)の空コントローラとして、「MyAuthCallbackController」を作成します。このコントローラは、OAuth認可時に戻ってくるコールバックのコントローラです。基本的な処理は、スーパークラスであるAuthCallbackControllerに記載されているため、あまり多くの処理を記述する必要はありません。
using GaMvcSample.Infra;
using Google.Apis.Auth.OAuth2.Mvc;
using Google.Apis.Auth.OAuth2.Mvc.Controllers;
using Google.Apis.Auth.OAuth2.Responses;
using System.Web.Mvc;
namespace GaMvcSample.Controllers
{
// OAuth認可時に戻ってくるコールバックのコントローラ
public class MyAuthCallbackController : AuthCallbackController
{
// (1)認証に使うAppFlowMetadataを指定
protected override FlowMetadata FlowData
{
get
{
return new MyFlowMetadata();
}
}
// (2)認証がエラーの際に呼び出されるメソッド
protected override ActionResult OnTokenError(TokenErrorResponse errorResponse)
{
ViewBag.ErrorMessage = errorResponse.ToString();
return View();
}
// (3)認証後に呼び出されるメソッド
//[AsyncTimeout(30000)]
//public async override Task<ActionResult> IndexAsync(AuthorizationCodeResponseUrl authorizationCode,
// CancellationToken taskCancellationToken)
//{
// // スーパークラスの処理をそのまま実行
// try
// {
// return await base.IndexAsync(authorizationCode, taskCancellationToken);
// }
// catch (Exception e)
// {
// // クライアントシークレットが間違っている場合等のエラー
// ViewBag.ErrorMessage = e.ToString();
// return View();
// }
//}
}
}
このクラスでは、Googleの認証画面から戻ってきた時の設定をします。
(1)のFlowDataプロパティでは、認証に使うAppFlowMetadataを指定するだけです。
(2)のOnTokenErrorメソッドでは、認証画面からの戻りが正常ではない場合の処理を記述します。例えばGoogle Analyticsデータの使用を拒否した場合に発生します。ここでは、非認可時に表示するページ「Views\MyAuthCallback\IndexAsync.cshtml」にエラーメッセージを渡して表示しています。
using GaMvcSample.Infra;
@{
ViewBag.Title = "About";
}
<h2>認証エラーです</h2>
<h3>@ViewBag.ErrorMessage</h3>
最後の(3)のIndexAsyncメソッドでは、認証画面から戻ってきた時に呼び出されています。この例では、コールバックされてからのタイムアウト時刻をデフォルトの10秒から30秒に延長していますが、特にオーバーライドしなくても問題ありません。
