Я пытаюсь использовать API календаря Google для демонстрации интеграции OAuth2, которую нам нужно будет сделать с другой третьей стороной. Я использую библиотеку DotNetOpenAuth, и мне удалось получить первоначальную переадресацию в Google для запроса Allow/Deny и вернуть код авторизации.Получение токена обновления OAuth2
Теперь мне нужно получить токен доступа и обновить токен, но мне кажется, что я получаю токен доступа обратно, токен обновления равен нулю.
Это мой контроллер метод действия, где 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 });
}
Любые идеи?
EDIT:
Чтобы получить код авторизации, я настроить oAuthClient идентично тому, что я сделал выше, и использовать этот метод:
oAuthClient.RequestUserAuthorization(new[] { "https://www.googleapis.com/auth/calendar" }, returnUrl);
Измените свой вопрос, чтобы указать способ отправки оригинального запроса на авторизацию. –
@ AndrewArnott Done; это всего лишь один вызов 'RequestUserAuthorization'. – Andy
Можете ли вы включить больше контекста в свой запрос? Например, как вы создаете 'oAuthClient', который вы используете для отправки запроса? –