Google Drive API Authentication

前端 未结 1 1023
予麋鹿
予麋鹿 2021-01-30 15:38

I\'d like to make an application that could access MY own Google Drive anytime, create files there, share them and so on. According to https://developers.google.com/drive/servic

相关标签:
1条回答
  • 2021-01-30 15:43

    Ok I got it. The answer can be found here: https://developers.google.com/accounts/docs/OAuth2WebServer#offline

    First You have to make an Auth request

        <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>
    

    Then you will get a 'code' to your return_url

    Then you need to exchange the code to access_token and 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>
    

    As a result of this you will bet response like:

    {
      "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]"
    }
    

    Now you can store these tokens in your application and use for unlimited time refreshing the access_token every 3600 secs

                <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>
    

    And each time you make this request you will get a new access_token

    {
      "access_token" : "[NEW ACCESS TOKEN]",
      "token_type" : "Bearer",
      "expires_in" : 3600,
      "id_token" : "eyJhbGciOiJSUzI1NiIsImtpZCI6ImRiMjBlNWMwZGU1YWI0MGRjNTU5ODBkM2EzYmZlNDdlOGM2NGM5YjAifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXVkIjoiMjQ2ODg5NjU3NDg2LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwidG9rZW5faGFzaCI6ImpyYk5oNkRHZFN4Y0w5MUI5Q1hab2ciLCJpZCI6IjExNTI0MDk1NDM0Njg1NTU4NjE2MSIsImNpZCI6IjI0Njg4OTY1NzQ4Ni5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImlhdCI6MTM1MzQwNTU5OSwiZXhwIjoxMzUzNDA5NDk5fQ.mGN3EYOX75gPubr3TqWIOBkfq-o3JBXMXx4MbxEBGMSuPdJi7VTqZa4isyR-st-J5_wTtA-j8tVQYnDeZDxj5KpJ14FFQPKTtv_VI5kvuT55KyOmGu4yidciYoffJMISisr8NqiksbemaiYX900sRv6PmoTA6Nf6VtHgj3BZjWo"
    }
    
    0 讨论(0)
提交回复
热议问题