2012-11-19 24 views
10

Tôi muốn tạo một ứng dụng có thể truy cập vào Google Drive của riêng tôi bất kỳ lúc nào, tạo tệp ở đó, chia sẻ chúng và cứ thế. Theo https://developers.google.com/drive/service-accounts "Sử dụng tài khoản Google thông thường làm tài khoản thuộc sở hữu của ứng dụng", chỉ cần tôi nhận được access_token và refresh_token một lần, lưu chúng trong ứng dụng của tôi và sử dụng refresh_token Tôi có thể làm mới access_token của mình (bằng cách nào đó).Xác thực API Google Drive

tôi có thể nhận access_token sử dụng yêu cầu một cái gì đó giống như https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/drive.file&redirect_uri=http://localhost;response_type=token&client_id=

Sau khi chấp thuận yêu cầu ứng dụng này trong hộp thoại người sử dụng tôi sẽ được chuyển hướng đến localhost của tôi và tôi sẽ nhận được access_token hết hạn trong 3600 giây.

Các câu hỏi là:

1. Làm thế nào để có được một refresh_token?
2. Cách làm mới access_token bằng cách sử dụng refresh_token?

Tôi không muốn sử dụng thư viện máy khách API của Google vì nó khủng khiếp (.NET).

+0

Xin lỗi bạn đã tìm thấy thư viện khách hàng khủng khiếp. Bạn đang sử dụng ngôn ngữ nào? –

+0

Xin lỗi. Tôi đã không đề cập rằng ... Tôi sử dụng C# (.NET) – Anubis

Trả lời

17

Ok tôi hiểu rồi. Câu trả lời có thể được tìm thấy ở đây: https://developers.google.com/accounts/docs/OAuth2WebServer#offline

Đầu tiên Bạn cần phải thực hiện một yêu cầu Auth

<form method="POST" action="https://accounts.google.com/o/oauth2/auth"> 
     <input type="hidden" name="scope" value="[YOUR SCOPE]"/> 
     <input type="hidden" name="client_id" value="[YOUR CLIENT ID]"/> 
     <input type="hidden" name="response_type" value="code"/> 
     <input type="hidden" name="redirect_uri" value="[YOUR RETURN URL]"/> 
     <input type="hidden" name="access_type" value="offline"/> 
     <input type="submit"/> 
    </form> 

Sau đó, bạn sẽ nhận được một mã '' để return_url bạn

Sau đó, bạn cần phải trao đổi mã để access_token và refresh_token

 <form method="POST" action="https://accounts.google.com/o/oauth2/token"> 
      <input type="text" name="code" value="[CODE YOU GOT IN PREV STEP]"/> 
      <input type="hidden" name="client_id" value="[YOUR CLIENT ID]"/> 
      <input type="hidden" name="client_secret" value="YOUR CLIENT SECRET"/> 
      <input type="hidden" name="grant_type" value="authorization_code"/> 
      <input type="hidden" name="redirect_uri" value="YOUR REDIRECT URL"/> 
      <input type="submit"/> 
     </form> 

Kết quả là bạn sẽ đặt cược phản hồi như:

{ 
    "access_token" : "[HERE YOU ACCESS TOKEN]", 
    "token_type" : "Bearer", 
    "expires_in" : 3600, 
    "id_token" : "eyJhbGciOiJSUzI1NiIsImtpZCI6ImRiMjBlNWMwZGU1YWI0MGRjNTU5ODBkM2EzYmZlNDdlOGM2NGM5YjAifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiY2lkIjoiMjQ2ODg5NjU3NDg2LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiMjQ2ODg5NjU3NDg2LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwidG9rZW5faGFzaCI6IjRURGtlQ0MzVWRPZHoyd2k1N2RnaUEiLCJpZCI6IjExNTI0MDk1NDM0Njg1NTU4NjE2MSIsImlhdCI6MTM1MzQwNDQ3MCwiZXhwIjoxMzUzNDA4MzcwfQ.Va98sh9LvMEIWxpRMFkcuFqtDAUfJLN5M__oJyjvmIxQR9q2NUIoocyjqbNyXc7as_ePQYiUjajx0SCumtR4Zhv-exeJfrKA_uMmJTe7jWhK6K2R3JQ2-aIZNnehpEuhYZBXgLhzYz1mlFrLqQTdV6LjDhRPDH-ol4UKWXfbAVE", 
    "refresh_token" : "[HERE YOUR REFRESH TOKEN]" 
} 

Bây giờ bạn có thể lưu trữ các thẻ trong ứng dụng của bạn và sử dụng cho thời gian không giới hạn làm mới access_token mỗi 3600 giây

  <form method="POST" action="https://accounts.google.com/o/oauth2/token"> 
       <input type="text" name="refresh_token" value="[YOUR REFRESH TOKEN]"/> 
       <input type="hidden" name="client_id" value="[YOUR CLIENT ID]"/> 
       <input type="hidden" name="client_secret" value="[YOUR CLIENT SECRET]"/> 
       <input type="hidden" name="grant_type" value="refresh_token"/> 
       <input type="submit"/> 
      </form> 

Và mỗi khi bạn thực hiện yêu cầu này, bạn sẽ nhận được một access_token mới

{ 
    "access_token" : "[NEW ACCESS TOKEN]", 
    "token_type" : "Bearer", 
    "expires_in" : 3600, 
    "id_token" : "eyJhbGciOiJSUzI1NiIsImtpZCI6ImRiMjBlNWMwZGU1YWI0MGRjNTU5ODBkM2EzYmZlNDdlOGM2NGM5YjAifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXVkIjoiMjQ2ODg5NjU3NDg2LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwidG9rZW5faGFzaCI6ImpyYk5oNkRHZFN4Y0w5MUI5Q1hab2ciLCJpZCI6IjExNTI0MDk1NDM0Njg1NTU4NjE2MSIsImNpZCI6IjI0Njg4OTY1NzQ4Ni5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImlhdCI6MTM1MzQwNTU5OSwiZXhwIjoxMzUzNDA5NDk5fQ.mGN3EYOX75gPubr3TqWIOBkfq-o3JBXMXx4MbxEBGMSuPdJi7VTqZa4isyR-st-J5_wTtA-j8tVQYnDeZDxj5KpJ14FFQPKTtv_VI5kvuT55KyOmGu4yidciYoffJMISisr8NqiksbemaiYX900sRv6PmoTA6Nf6VtHgj3BZjWo" 
} 
+0

Đừng quên đánh dấu vấn đề này đã được trả lời. – JBCP