GoogleのCalendarAPIを使用して、別のサードパーティと行う必要のあるOAuth2統合をデモしようとしています。DotNetOpenAuthライブラリを使用していますが、許可/拒否プロンプトのGoogleへの最初のリダイレクトを取得し、認証コードを取り戻すことができました。
アクセストークンと更新トークンを取得する必要がありますが、アクセストークンを取得するだけのようで、更新トークンはnullです。
これは、ユーザーが承認または拒否した後にGoogleがリダイレクトするコントローラーアクションメソッドです。
public ActionResult ProcessResponse(string state, string code, string error)
{
var oAuthClient =
new WebServerClient(
new AuthorizationServerDescription
{
TokenEndpoint = new Uri("https://accounts.google.com/o/oauth2/token"),
AuthorizationEndpoint = new Uri("https://accounts.google.com/o/oauth2/auth"),
ProtocolVersion = ProtocolVersion.V20
},
_applicationId,
_secret)
{
AuthorizationTracker = new TokenManager()
};
var authState = oAuthClient.ProcessUserAuthorization();
var accessToken = authState.AccessToken;
var refreshToken = authState.RefreshToken;
return View(new[] { accessToken, refreshToken });
}
何か案は?
編集:
認証コードを取得するには、上記と同じようにoAuthClientを設定し、次の方法を使用します。
oAuthClient.RequestUserAuthorization(new[] { "https://www.googleapis.com/auth/calendar" }, returnUrl);