2012-06-27 41 views
5

Tôi đang cố gắng sử dụng API lịch của Google để giới thiệu một tích hợp OAuth2 mà chúng tôi sẽ cần thực hiện với một bên thứ ba khác. Tôi đang sử dụng thư viện DotNetOpenAuth và tôi có thể chuyển hướng ban đầu đến Google cho lời nhắc Cho phép/Từ chối và nhận lại mã ủy quyền.Nhận mã thông báo làm mới OAuth2

Tôi hiện cần có mã thông báo truy cập và mã thông báo làm mới, nhưng dường như tôi chỉ nhận được mã thông báo truy cập, mã thông báo làm mới là không.

Đây là phương pháp hành động điều khiển của tôi mà Google chuyển hướng trở lại sau khi người dùng Chấp nhận hay phủ nhận:

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 }); 
} 

Bất kỳ ý tưởng?

EDIT:

Để lấy mã ủy quyền, tôi thiết lập các oAuthClient hệt với những gì tôi đã làm ở trên, và sử dụng phương pháp này:

oAuthClient.RequestUserAuthorization(new[] { "https://www.googleapis.com/auth/calendar" }, returnUrl); 
+0

Vui lòng chỉnh sửa câu hỏi của bạn để bao gồm cách bạn gửi yêu cầu ủy quyền ban đầu. –

+0

@AndrewArnott Xong; nó chỉ là một cuộc gọi duy nhất để 'RequestUserAuthorization'. – Andy

+0

Bạn có thể đưa thêm ngữ cảnh vào yêu cầu của mình không? Ví dụ: cách bạn xây dựng 'oAuthClient' mà bạn sử dụng để gửi yêu cầu? –

Trả lời

Các vấn đề liên quan