2012-06-27 1 views
5

Я пытаюсь использовать 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); 
+0

Измените свой вопрос, чтобы указать способ отправки оригинального запроса на авторизацию. –

+0

@ AndrewArnott Done; это всего лишь один вызов 'RequestUserAuthorization'. – Andy

+0

Можете ли вы включить больше контекста в свой запрос? Например, как вы создаете 'oAuthClient', который вы используете для отправки запроса? –

ответ