Я пытаюсь использовать Google Calendar API для демонстрации интеграции OAuth2, которую нам нужно будет сделать с другой третьей стороной. Я использую библиотеку DotNetOpenAuth, и мне удалось получить начальное перенаправление в Google для запроса «Разрешить/запретить» и вернуть код авторизации.
Теперь мне нужно получить токен доступа и токен обновления, но мне кажется, что я получаю только токен доступа, токен обновления равен нулю.
Это мой метод действия контроллера, когда 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);