2012-11-19 19 views
10

मैं ऐसा एप्लिकेशन बनाना चाहता हूं जो कभी भी मेरी खुद की Google ड्राइव तक पहुंच सके, वहां फाइलें बना सके, उन्हें साझा करें और इसी तरह। https://developers.google.com/drive/service-accounts के अनुसार "नियमित स्वामित्व वाले खातों को एप्लिकेशन-स्वामित्व वाले खातों के रूप में उपयोग करें" केवल मुझे लगता है कि मुझे access_token और refresh_token प्राप्त करने की आवश्यकता है, उन्हें अपने एप्लिकेशन में स्टोर करें और refresh_token का उपयोग करके मैं अपना access_token (किसी भी तरह) रीफ्रेश कर सकता हूं।Google ड्राइव एपीआई प्रमाणीकरण

मैं की तरह https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/drive.file&redirect_uri=http://localhost;response_type=token&client_id=

अनुरोध कुछ इस्तेमाल करने के बाद मैं अपने स्थानीय होस्ट करने के लिए पुनः निर्देशित किया जाएगा उपयोगकर्ता संवाद में इस आवेदन अनुरोध को स्वीकार ACCESS_TOKEN प्राप्त कर सकते हैं और ACCESS_TOKEN कि 3600 सेकंड में समाप्त हो रहा हो जाएगा।

प्रश्न हैं:

1. कैसे एक refresh_token पाने के लिए?
2. refresh_token का उपयोग कर access_token को रीफ्रेश कैसे करें?

मैं Google की API क्लाइंट लाइब्रेरी का उपयोग नहीं करना चाहता क्योंकि यह भयानक (.NET) है।

+0

क्षमा करें आपको क्लाइंट लाइब्रेरी भयानक मिली। आप किस भाषा का उपयोग कर रहे हैं? –

+0

क्षमा करें। मैंने इसका उल्लेख नहीं किया ... मैं सी # (.NET) – Anubis

उत्तर

17

ठीक है मुझे मिल गया। जवाब यहां पाया जा सकता: https://developers.google.com/accounts/docs/OAuth2WebServer#offline

सबसे पहले आप एक प्रमाणीकरण अनुरोध

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

तो फिर आप अपने return_url करने के लिए एक 'कोड' मिल जाएगा

तो फिर तुम कोड का आदान-प्रदान करने की जरूरत है करना है ACCESS_TOKEN और 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> 

आप की तरह प्रतिक्रिया शर्त लगा सकता हूँ इस के परिणामस्वरूप करने के लिए:

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

अब आप अपने आवेदन में इन टोकन की दुकान और ACCESS_TOKEN ताज़ा हर 3600 सेकेंड

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

और हर बार जब आप यह अनुरोध करने के असीमित समय के लिए उपयोग कर सकते हैं आप एक नया 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

का उपयोग करता हूं इस समस्या का उत्तर देने के लिए मत भूलना। – JBCP

संबंधित मुद्दे