मोबाइल और डेस्कटॉप ऐप्स के लिए OAuth 2.0

यह दस्तावेज़ बताता है कि फ़ोन, टैबलेट और कंप्यूटर जैसे उपकरणों पर इंस्टॉल किए गए एप्लिकेशन Google API तक पहुंच को अधिकृत करने के लिए Google के OAuth 2.0 एंडपॉइंट का उपयोग कैसे करते हैं।

OAuth 2.0 उपयोगकर्ताओं को अपने उपयोगकर्ता नाम, पासवर्ड और अन्य जानकारी को निजी रखते हुए किसी एप्लिकेशन के साथ विशिष्ट डेटा साझा करने की अनुमति देता है। उदाहरण के लिए, कोई एप्लिकेशन उपयोगकर्ताओं से अपने Google डिस्क में फ़ाइलों को संग्रहीत करने की अनुमति प्राप्त करने के लिए OAuth 2.0 का उपयोग कर सकता है।

इंस्टॉल किए गए ऐप्स अलग-अलग डिवाइस में वितरित किए जाते हैं, और यह माना जाता है कि ये ऐप्स गुप्त नहीं रख सकते हैं। जब उपयोगकर्ता ऐप में मौजूद हो या जब ऐप बैकग्राउंड में चल रहा हो, तब वे Google API को एक्सेस कर सकते हैं।

इस प्राधिकरण प्रवाह के लिए इस्तेमाल एक के समान है वेब सर्वर अनुप्रयोगों । मुख्य अंतर यह है कि इंस्टॉल किए गए ऐप्स को सिस्टम ब्राउज़र खोलना होगा और Google के प्राधिकरण सर्वर से प्रतिक्रियाओं को संभालने के लिए स्थानीय रीडायरेक्ट यूआरआई की आपूर्ति करनी होगी।

वैकल्पिक

मोबाइल एप्लिकेशन के लिए आप के लिए साइन इन-गूगल का उपयोग करना चाहें एंड्रॉयड या आईओएस । Google साइन-इन क्लाइंट लाइब्रेरी प्रमाणीकरण और उपयोगकर्ता प्राधिकरण को संभालती है, और उन्हें यहां वर्णित निचले स्तर के प्रोटोकॉल की तुलना में लागू करना आसान हो सकता है।

उपकरणों है कि एक प्रणाली ब्राउज़र समर्थन नहीं करता या उस पर चल रहे एप्लिकेशन के लिए इस तरह के टीवी, गेम कंसोल, कैमरा, या प्रिंटर के रूप में इनपुट क्षमताओं, सीमित है, को देखने के टीवी और उपकरणों के लिए OAuth 2.0 या Google साइन-इन उपकरणों के लिए

पुस्तकालय और नमूने

इस दस्तावेज़ में वर्णित OAuth 2.0 प्रवाह को लागू करने में आपकी सहायता करने के लिए हम निम्नलिखित पुस्तकालयों और नमूनों की अनुशंसा करते हैं:

आवश्यक शर्तें

अपने प्रोजेक्ट के लिए API सक्षम करें

है कि गूगल एपीआई कॉल किसी भी आवेदन में उन API सक्षम करने की जरूरत है API Console।

अपने प्रोजेक्ट के लिए API सक्षम करने के लिए:

  1. Open the API Library में Google API Console।
  2. If prompted, select a project, or create a new one.
  3. API Library सूचियों सभी उपलब्ध एपीआई, उत्पाद परिवार और लोकप्रियता के आधार पर वर्गीकृत। एपीआई आप सक्षम करना चाहते सूची में दिखाई नहीं देता है, उपयोग खोज यह मिल जाए, या उत्पाद परिवार के अंतर्गत आता है यह में सभी देखें क्लिक करें।
  4. एपीआई आप सक्षम करना चाहते हैं, तो बटन को सक्रिय करें क्लिक करें।
  5. If prompted, enable billing.
  6. If prompted, read and accept the API's Terms of Service.

प्राधिकरण क्रेडेंशियल बनाएं

Google API तक पहुंचने के लिए OAuth 2.0 का उपयोग करने वाले किसी भी एप्लिकेशन के पास प्राधिकरण क्रेडेंशियल होना चाहिए जो Google के OAuth 2.0 सर्वर पर एप्लिकेशन की पहचान करता हो। निम्नलिखित चरण बताते हैं कि अपने प्रोजेक्ट के लिए क्रेडेंशियल कैसे बनाएं। तब आपके एप्लिकेशन उन API तक पहुंचने के लिए क्रेडेंशियल्स का उपयोग कर सकते हैं जिन्हें आपने उस प्रोजेक्ट के लिए सक्षम किया है।

  1. Go to the Credentials page.
  2. साख बनाएं> OAuth क्लाइंट आईडी पर क्लिक करें।
  3. नीचे दिए गए अनुभाग क्लाइंट प्रकारों और Google के प्राधिकरण सर्वर द्वारा समर्थित रीडायरेक्ट विधियों का वर्णन करते हैं। आपके आवेदन के लिए अनुशंसित क्लाइंट प्रकार चुनें, अपने OAuth क्लाइंट को नाम दें, और अन्य फ़ील्ड्स को उपयुक्त रूप में सेट करें।

कस्टम यूआरआई योजना (एंड्रॉइड, आईओएस, यूडब्ल्यूपी)

एंड्रॉइड ऐप, आईओएस ऐप और यूनिवर्सल विंडोज प्लेटफॉर्म (यूडब्ल्यूपी) ऐप के लिए एक कस्टम यूआरआई योजना की सिफारिश की जाती है।

एंड्रॉयड
  1. एंड्रॉयड आवेदन प्रकार का चयन करें।
  2. OAuth क्लाइंट के लिए एक नाम दर्ज करें। यह नाम अपने प्रोजेक्ट की पर प्रदर्शित होता है Credentials page ग्राहक की पहचान के लिए।
  3. अपने Android ऐप का पैकेज नाम दर्ज करें। यह मान में परिभाषित किया गया हैpackage की विशेषता <manifest> तत्व अपनी ऐप्लिकेशन मेनिफेस्ट फ़ाइल में।
  4. ऐप वितरण का SHA-1 हस्ताक्षर प्रमाणपत्र फ़िंगरप्रिंट दर्ज करें।
    • अपने अनुप्रयोग का उपयोग करता है, तो गूगल प्ले से करने से APP , प्ले कंसोल के अनुप्रयोग पर हस्ताक्षर पेज से SHA-1 फ़िंगरप्रिंट कॉपी।
    • आप अपने खुद के कीस्ट्रोक और हस्ताक्षर कुंजी प्रबंधन करते हैं, एक मानव पठनीय प्रारूप में प्रमाण पत्र के बारे में जानकारी मुद्रित करने के लिए Keytool उपयोगिता जावा के साथ शामिल का उपयोग करें। कॉपी SHA1 में मूल्य Certificate fingerprints Keytool उत्पादन की धारा। देखें आपका क्लाइंट प्रमाणित कर रहा है अधिक जानकारी के लिए Android दस्तावेज़ के लिए Google API में।
  5. बनाएँ क्लिक करें।
आईओएस
  1. आईओएस आवेदन प्रकार का चयन करें।
  2. OAuth क्लाइंट के लिए एक नाम दर्ज करें। यह नाम अपने प्रोजेक्ट की पर प्रदर्शित होता है Credentials page ग्राहक की पहचान के लिए।
  3. अपने ऐप के लिए बंडल पहचानकर्ता दर्ज करें। बंडल आईडी का मूल्य है CFBundleIdentifier अपने ऐप की जानकारी संपत्ति सूची संसाधन फ़ाइल (Info.plist) में कुंजी। मान सबसे सामान्य फलक या Xcode प्रोजेक्ट एडिटर के साइनिंग और क्षमताओं फलक में प्रदर्शित होता है। बंडल आईडी भी पर ऐप्स के लिए ऐप सूचना पृष्ठ के सामान्य जानकारी अनुभाग में प्रदर्शित किया जाता है एप्पल App स्टोर से कनेक्ट साइट
  4. (वैकल्पिक)

    अगर ऐप ऐप्पल के ऐप स्टोर में प्रकाशित हुआ है तो अपने ऐप का ऐप स्टोर आईडी डालें। स्टोर आईडी प्रत्येक ऐप्पल ऐप स्टोर यूआरएल में शामिल एक संख्यात्मक स्ट्रिंग है।

    1. खोलें Apple App Store ऐप्लिकेशन अपने iOS या iPadOS डिवाइस पर।
    2. अपना ऐप खोजें।
    3. शेयर बटन का चयन करें (वर्ग और तीर ऊपर का प्रतीक)।
    4. का चयन करें कॉपी लिंक।
    5. लिंक को टेक्स्ट एडिटर में पेस्ट करें। ऐप स्टोर आईडी यूआरएल का अंतिम हिस्सा है।

      उदाहरण: https://apps.apple.com/app/google/id 284815942

  5. (वैकल्पिक)

    अपनी टीम आईडी दर्ज करें। देखें अपनी टीम ID का पता लगाएं और जानकारी के लिए एप्पल डेवलपर खाता दस्तावेज में।

  6. बनाएँ क्लिक करें।
यूडब्ल्यूपी
  1. यूनिवर्सल विंडोज प्लेटफार्म आवेदन प्रकार का चयन करें।
  2. OAuth क्लाइंट के लिए एक नाम दर्ज करें। यह नाम अपने प्रोजेक्ट की पर प्रदर्शित होता है Credentials page ग्राहक की पहचान के लिए।
  3. अपने ऐप की 12-वर्ण वाली Microsoft Store ID दर्ज करें। आप में यह मान पा सकते हैं माइक्रोसॉफ्ट सहयोगी केंद्र पर अनुप्रयोग पहचान एप्लिकेशन प्रबंधन अनुभाग में पृष्ठ।
  4. बनाएँ क्लिक करें।

UWP ऐप्स के लिए, कस्टम URI स्कीम 39 वर्णों से अधिक लंबी नहीं हो सकती।

लूपबैक आईपी एड्रेस (मैकओएस, लिनक्स, विंडोज डेस्कटॉप)

इस URL का उपयोग करके प्राधिकरण कोड प्राप्त करने के लिए, आपका एप्लिकेशन स्थानीय वेब सर्वर पर सुन रहा होगा। यह कई प्लेटफॉर्म पर संभव है, लेकिन सभी प्लेटफॉर्म पर नहीं। हालाँकि, यदि आपका प्लेटफ़ॉर्म इसका समर्थन करता है, तो प्राधिकरण कोड प्राप्त करने के लिए यह अनुशंसित तंत्र है।

जब आपका ऐप प्राधिकरण प्रतिक्रिया प्राप्त करता है, तो सर्वोत्तम उपयोगिता के लिए उसे एक HTML पृष्ठ प्रदर्शित करके प्रतिक्रिया देनी चाहिए जो उपयोगकर्ता को ब्राउज़र बंद करने और आपके ऐप पर वापस जाने का निर्देश देता है।

अनुशंसित उपयोग macOS, Linux और Windows डेस्कटॉप (लेकिन यूनिवर्सल Windows प्लेटफ़ॉर्म नहीं) ऐप्स
फॉर्म मान डेस्कटॉप ऐप्स के लिए आवेदन प्रकार सेट करें।

मैनुअल कॉपी / पेस्ट

एक्सेस स्कोप की पहचान करें

स्कोप आपके एप्लिकेशन को केवल उन संसाधनों तक पहुंच का अनुरोध करने में सक्षम बनाता है जिनकी उसे आवश्यकता होती है, जबकि उपयोगकर्ताओं को आपके एप्लिकेशन को प्रदान की जाने वाली पहुंच की मात्रा को नियंत्रित करने में सक्षम बनाता है। इस प्रकार, अनुरोध किए गए कार्यक्षेत्रों की संख्या और उपयोगकर्ता की सहमति प्राप्त करने की संभावना के बीच एक विपरीत संबंध हो सकता है।

इससे पहले कि आप OAuth 2.0 प्राधिकरण को लागू करना शुरू करें, हम अनुशंसा करते हैं कि आप उन क्षेत्रों की पहचान करें जिन्हें एक्सेस करने के लिए आपके ऐप को अनुमति की आवश्यकता होगी।

OAuth 2.0 API कार्यक्षेत्र दस्तावेज़ स्कोप है कि आप का उपयोग करने के लिए Google API का उपयोग कर सकते हैं की एक पूरी सूची है।

OAuth 2.0 एक्सेस टोकन प्राप्त करना

निम्नलिखित चरण दिखाते हैं कि उपयोगकर्ता की ओर से एपीआई अनुरोध करने के लिए उपयोगकर्ता की सहमति प्राप्त करने के लिए आपका एप्लिकेशन Google के OAuth 2.0 सर्वर के साथ कैसे इंटरैक्ट करता है। उपयोगकर्ता प्राधिकरण की आवश्यकता वाले Google API अनुरोध को निष्पादित करने से पहले आपके आवेदन में वह सहमति होनी चाहिए।

चरण 1: एक कोड सत्यापनकर्ता उत्पन्न करें और चुनौती दें

गूगल का समर्थन करता है कोड एक्सचेंज के लिए सबूत कुंजी स्थापित एप्लिकेशन प्रवाह अधिक सुरक्षित बनाने के (PKCE) प्रोटोकॉल। प्रत्येक प्राधिकरण अनुरोध के लिए एक अद्वितीय कोड सत्यापनकर्ता बनाया जाता है, और इसका रूपांतरित मूल्य, जिसे "code_challenge" कहा जाता है, प्राधिकरण कोड प्राप्त करने के लिए प्राधिकरण सर्वर को भेजा जाता है।

कोड सत्यापनकर्ता बनाएं

एक code_verifier एक उच्च एन्ट्रापी क्रिप्टोग्राफिक यादृच्छिक स्ट्रिंग अनारक्षित वर्ण [AZ] उपयोग कर रहा है / [az] / [0-9] / "-" "।" / / "_" / "~", न्यूनतम लंबाई 43 वर्णों और अधिकतम लंबाई 128 वर्णों के साथ।

कोड सत्यापनकर्ता के पास मूल्य का अनुमान लगाने के लिए इसे अव्यावहारिक बनाने के लिए पर्याप्त एन्ट्रापी होनी चाहिए।

कोड चुनौती बनाएं

कोड चुनौती बनाने के दो तरीके समर्थित हैं।

कोड चैलेंज जनरेशन मेथड्स
S256 (अनुशंसित) कोड चुनौती बेस 64URL (बिना पैडिंग के) कोड सत्यापनकर्ता का SHA256 हैश एन्कोडेड है।
code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
मैदान कोड चुनौती वही मान है जो ऊपर जेनरेट किए गए कोड सत्यापनकर्ता के रूप में है।
code_challenge = code_verifier

चरण 2: Google के OAuth 2.0 सर्वर को एक अनुरोध भेजें

उपयोगकर्ता अनुमति पाने के लिए, पर गूगल की प्राधिकरण सर्वर के लिए एक अनुरोध भेजने के https://accounts.google.com/o/oauth2/v2/auth । यह समापन बिंदु सक्रिय सत्र लुकअप को संभालता है, उपयोगकर्ता को प्रमाणित करता है, और उपयोगकर्ता की सहमति प्राप्त करता है। एंडपॉइंट केवल एसएसएल पर पहुंच योग्य है, और यह HTTP (गैर-एसएसएल) कनेक्शन को अस्वीकार कर देता है।

प्राधिकरण सर्वर स्थापित अनुप्रयोगों के लिए निम्नलिखित क्वेरी स्ट्रिंग पैरामीटर का समर्थन करता है:

मापदंडों
client_id आवश्यक

आपके आवेदन के लिए क्लाइंट आईडी। आप में यह मान पा सकते हैं API ConsoleCredentials page

redirect_uri आवश्यक

यह निर्धारित करता है कि Google का प्राधिकरण सर्वर आपके ऐप को कैसे प्रतिक्रिया भेजता है। वहाँ कई रीडायरेक्ट इंस्टॉल किए गए एप्लिकेशन के लिए उपलब्ध विकल्प हैं, और आप अपने लिए निर्धारित किया है जाएगा प्राधिकरण प्रमाणिकता मन में एक विशेष रीडायरेक्ट विधि के साथ।

मान को उसी OAuth 2.0 क्लाइंट है, जो आप अपने ग्राहक की में विन्यस्त के लिए अधिकृत रीडायरेक्ट रीडायरेक्ट यूआरआई में से एक से मेल खाना चाहिए API ConsoleCredentials page। इस मान को एक अधिकृत यूआरआई से मेल नहीं खाता, तो आप एक मिल जाएगा redirect_uri_mismatch त्रुटि।

शो नीचे दी गई तालिका उचित redirect_uri प्रत्येक विधि के लिए पैरामीटर मान:

redirect_uri मूल्यों
कस्टम यूआरआई योजना com.example.app : redirect_uri_path

या

com.googleusercontent.apps.123 : redirect_uri_path
  • com.example.app आपके नियंत्रण में किसी डोमेन का रिवर्स DNS अंकन है। कस्टम योजना में मान्य होने के लिए एक अवधि होनी चाहिए।
  • com.googleusercontent.apps.123 ग्राहक आईडी रिवर्स DNS अंकन है।
  • redirect_uri_path जैसे एक वैकल्पिक मार्ग घटक, है /oauth2redirect । ध्यान दें कि पथ एकल स्लैश से शुरू होना चाहिए, जो नियमित HTTP URL से अलग है।
लूपबैक आईपी पता http://127.0.0.1: port या http://[::1]: port

प्रासंगिक लूपबैक आईपी पते के लिए अपने प्लेटफॉर्म को क्वेरी करें और एक यादृच्छिक उपलब्ध पोर्ट पर एक HTTP श्रोता शुरू करें। स्थानापन्न port वास्तविक पोर्ट संख्या के साथ अपने ऐप्लिकेशन पर सुनता है।

मैनुअल कॉपी / पेस्ट urn:ietf:wg:oauth:2.0:oob
प्रोग्रामेटिक निष्कर्षण urn:ietf:wg:oauth:2.0:oob:auto
response_type आवश्यक

निर्धारित करता है कि Google OAuth 2.0 एंडपॉइंट एक प्राधिकरण कोड लौटाता है या नहीं।

करने के लिए पैरामीटर मान सेट code स्थापित अनुप्रयोगों के लिए।

scope आवश्यक

कार्यक्षेत्रों की एक अंतरिक्ष-सीमांकित सूची जो उन संसाधनों की पहचान करती है जिन्हें आपका एप्लिकेशन उपयोगकर्ता की ओर से एक्सेस कर सकता है। ये मान उस सहमति स्क्रीन को सूचित करते हैं जिसे Google उपयोगकर्ता को प्रदर्शित करता है।

स्कोप आपके एप्लिकेशन को केवल उन संसाधनों तक पहुंच का अनुरोध करने में सक्षम बनाता है जिनकी उसे आवश्यकता होती है जबकि उपयोगकर्ताओं को आपके एप्लिकेशन को प्रदान की जाने वाली पहुंच की मात्रा को नियंत्रित करने में सक्षम बनाता है। इस प्रकार, अनुरोध किए गए कार्यक्षेत्रों की संख्या और उपयोगकर्ता की सहमति प्राप्त करने की संभावना के बीच एक विपरीत संबंध है।

code_challenge अनुशंसित

निर्दिष्ट करता है कि एक एन्कोड code_verifier कि प्राधिकरण कोड विनिमय के दौरान एक सर्वर साइड चुनौती के रूप में इस्तेमाल किया जाएगा। यह पैरामीटर के साथ इस्तेमाल किया जाना चाहिए code_challenge पैरामीटर ऊपर वर्णित है। देखें कोड चुनौती बनाने के बारे में अधिक जानकारी के लिए ऊपर अनुभाग।

code_challenge_method अनुशंसित

निर्दिष्ट करता है कि क्या विधि एक एन्कोड करने के लिए इस्तेमाल किया गया था code_verifier कि प्राधिकरण कोड विनिमय के दौरान इस्तेमाल किया जाएगा। यह पैरामीटर के साथ इस्तेमाल किया जाना चाहिए code_challenge पैरामीटर। का मूल्य code_challenge_method को चूक plain यदि अनुरोध है कि एक भी शामिल है में मौजूद नहीं code_challenge । इस पैरामीटर के लिए केवल समर्थित मान हैं S256 या plain

state अनुशंसित

आपके प्राधिकरण अनुरोध और प्राधिकरण सर्वर की प्रतिक्रिया के बीच स्थिति बनाए रखने के लिए आपके एप्लिकेशन द्वारा उपयोग किए जाने वाले किसी भी स्ट्रिंग मान को निर्दिष्ट करता है। सर्वर सही मूल्य है कि आप के रूप में एक भेज देता है name=value URL खंड पहचानकर्ता में जोड़ी ( # का) redirect_uri करने के लिए उपयोगकर्ता सहमति के बाद या आपके आवेदन की पहुँच अनुरोध इनकार करते हैं।

आप इस पैरामीटर का उपयोग कई उद्देश्यों के लिए कर सकते हैं, जैसे कि उपयोगकर्ता को आपके आवेदन में सही संसाधन के लिए निर्देशित करना, गैर-भेजना, और क्रॉस-साइट अनुरोध जालसाजी को कम करना। चूंकि आपका redirect_uri अनुमान लगाया जा सकता है, एक का उपयोग कर state मूल्य अपने आश्वासन दिया है कि एक इनकमिंग कनेक्शन एक प्रमाणीकरण अनुरोध का परिणाम है बढ़ा सकते हैं। यदि आप एक यादृच्छिक स्ट्रिंग उत्पन्न करते हैं या कुकी के हैश या क्लाइंट की स्थिति को कैप्चर करने वाले किसी अन्य मान को एन्कोड करते हैं, तो आप अतिरिक्त रूप से यह सुनिश्चित करने के लिए प्रतिक्रिया को सत्यापित कर सकते हैं कि अनुरोध और प्रतिक्रिया एक ही ब्राउज़र में उत्पन्न हुई है, क्रॉस-साइट जैसे हमलों के खिलाफ सुरक्षा प्रदान करती है। जालसाजी का अनुरोध करें। देखें OpenID Connect ने कैसे बना सकते हैं और एक की पुष्टि करने का एक उदाहरण के लिए दस्तावेज़ state टोकन।

login_hint ऐच्छिक

यदि आपका एप्लिकेशन जानता है कि कौन सा उपयोगकर्ता प्रमाणित करने का प्रयास कर रहा है, तो वह Google प्रमाणीकरण सर्वर को संकेत प्रदान करने के लिए इस पैरामीटर का उपयोग कर सकता है। सर्वर साइन-इन फॉर्म में ईमेल फ़ील्ड को पहले से भरकर या उपयुक्त बहु-लॉगिन सत्र का चयन करके लॉगिन प्रवाह को सरल बनाने के लिए संकेत का उपयोग करता है।

एक ईमेल पता या करने के लिए पैरामीटर मान सेट sub पहचानकर्ता है, जो उपयोगकर्ता के Google आईडी के बराबर है।

नमूना प्राधिकरण URL

नीचे दिए गए टैब विभिन्न रीडायरेक्ट यूआरआई विकल्पों के लिए नमूना प्राधिकरण URL दिखाते हैं।

यूआरएल की मूल्य को छोड़ कर एक हैं redirect_uri पैरामीटर। यूआरएल भी आवश्यक होते हैं response_type और client_id मानकों साथ ही वैकल्पिक state पैरामीटर। प्रत्येक URL में पठनीयता के लिए पंक्ति विराम और रिक्त स्थान होते हैं।

कस्टम यूआरआई योजना

https://accounts.google.com/o/oauth2/v2/auth?
 scope=email%20profile&
 response_type=code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken&
 redirect_uri=com.example.app%3A/oauth2redirect&
 client_id=client_id

लूपबैक आईपी पता

https://accounts.google.com/o/oauth2/v2/auth?
 scope=email%20profile&
 response_type=code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken&
 redirect_uri=http%3A//127.0.0.1%3A9004&
 client_id=client_id

कॉपी पेस्ट

https://accounts.google.com/o/oauth2/v2/auth?
 scope=email%20profile&
 response_type=code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken&
 redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&
 client_id=client_id

प्रोग्रामेटिक निष्कर्षण

https://accounts.google.com/o/oauth2/v2/auth?
 scope=email%20profile&
 response_type=code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken&
 redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob%3Aauto&
 client_id=client_id

चरण 3: Google उपयोगकर्ता को सहमति के लिए संकेत देता है

इस चरण में, उपयोगकर्ता यह तय करता है कि आपके आवेदन को अनुरोधित पहुंच प्रदान करनी है या नहीं। इस स्तर पर, Google एक सहमति विंडो प्रदर्शित करता है जो आपके एप्लिकेशन का नाम और Google API सेवाओं को दिखाता है कि वह उपयोगकर्ता के प्राधिकरण क्रेडेंशियल्स के साथ एक्सेस करने की अनुमति का अनुरोध कर रहा है और एक्सेस के दायरे का सारांश दिया जाना है। उपयोगकर्ता तब आपके आवेदन द्वारा अनुरोधित एक या अधिक क्षेत्रों तक पहुंच प्रदान करने या अनुरोध को अस्वीकार करने के लिए सहमति दे सकता है।

आपके एप्लिकेशन को इस स्तर पर कुछ भी करने की आवश्यकता नहीं है क्योंकि यह Google के OAuth 2.0 सर्वर से प्रतिक्रिया की प्रतीक्षा कर रहा है, यह दर्शाता है कि कोई एक्सेस दी गई थी या नहीं। उस प्रतिक्रिया को निम्नलिखित चरण में समझाया गया है।

त्रुटियाँ

Google के OAuth 2.0 प्राधिकरण समापन बिंदु के अनुरोध अपेक्षित प्रमाणीकरण और प्राधिकरण प्रवाह के बजाय उपयोगकर्ता-सामना करने वाले त्रुटि संदेश प्रदर्शित कर सकते हैं। सामान्य त्रुटि कोड और सुझाए गए समाधान नीचे सूचीबद्ध हैं।

admin_policy_enforced

Google खाता उनके Google कार्यस्थान व्यवस्थापक की नीतियों के कारण अनुरोधित एक या अधिक क्षेत्रों को अधिकृत करने में असमर्थ है। गूगल कार्यस्थान व्यवस्थापक सहायता लेख देखें नियंत्रण तीसरे पक्ष के और आंतरिक एप्लिकेशन गूगल कार्यस्थान डेटा का उपयोग जो कैसे एक व्यवस्थापक सभी कार्यक्षेत्रों या संवेदनशील और प्रतिबंधित स्कोप के लिए उपयोग होने तक आपकी पहुंच स्पष्ट रूप से अपने OAuth क्लाइंट आईडी को दी जाती है सीमित कर सकते हैं के बारे में अधिक जानकारी के लिए।

disallowed_useragent

प्राधिकरण endpoint एक एम्बेडेड उपयोगकर्ता-एजेंट गूगल के द्वारा अनुमत नहीं अंदर प्रदर्शित किया जाता है OAuth 2.0 नीतियाँ

एंड्रॉयड

जब में प्राधिकरण अनुरोधों खोलने एंड्रॉयड डेवलपर्स यह त्रुटि संदेश का सामना कर सकतेandroid.webkit.WebView । डेवलपर्स के बजाय इस तरह के रूप एंड्रॉयड पुस्तकालयों का उपयोग करना चाहिए गूगल Android के लिए साइन-इन या OpenID फाउंडेशन के Android के लिए AppAuth

वेब डेवलपर को इस त्रुटि का सामना तब करना पड़ सकता है जब कोई Android ऐप किसी एम्बेडेड उपयोगकर्ता-एजेंट में एक सामान्य वेब लिंक खोलता है और कोई उपयोगकर्ता आपकी साइट से Google के OAuth 2.0 प्राधिकरण समापन बिंदु पर नेविगेट करता है। डेवलपर्स सामान्य लिंक ऑपरेटिंग सिस्टम है, जो दोनों शामिल की डिफ़ॉल्ट लिंक हैंडलर में खोलने के लिए अनुमति चाहिए Android एप्लिकेशन लिंक संचालकों या डिफ़ॉल्ट ब्राउज़र अनुप्रयोग। एंड्रॉयड कस्टम टैब पुस्तकालय भी एक समर्थित विकल्प है।

आईओएस

जब में प्राधिकरण अनुरोधों खोलने आईओएस और MacOS डेवलपर्स इस त्रुटि का सामना कर सकतेWKWebView । डेवलपर्स के बजाय इस तरह के रूप आईओएस पुस्तकालयों का उपयोग करना चाहिए iOS के लिए Google साइन-इन या OpenID फाउंडेशन के iOS के लिए AppAuth

वेब डेवलपर को इस त्रुटि का सामना करना पड़ सकता है जब कोई iOS या macOS ऐप एक एम्बेडेड उपयोगकर्ता-एजेंट में एक सामान्य वेब लिंक खोलता है और कोई उपयोगकर्ता आपकी साइट से Google के OAuth 2.0 प्राधिकरण समापन बिंदु पर नेविगेट करता है। डेवलपर्स सामान्य लिंक ऑपरेटिंग सिस्टम है, जो दोनों शामिल की डिफ़ॉल्ट लिंक हैंडलर में खोलने के लिए अनुमति चाहिए यूनिवर्सल लिंक संचालकों या डिफ़ॉल्ट ब्राउज़र अनुप्रयोग।SFSafariViewController पुस्तकालय भी एक समर्थित विकल्प है।

org_internal

अनुरोध में OAuth क्लाइंट आईडी एक परियोजना के लिए एक विशिष्ट में गूगल खातों में पहुंच को सीमित करने का हिस्सा है Google मेघ संगठन । इस विन्यास विकल्प के बारे में अधिक जानकारी के लिए देखने के उपयोगकर्ता प्रकार अपनी OAuth सहमति स्क्रीन सहायता लेख की स्थापना में अनुभाग।

redirect_uri_mismatch

redirect_uri प्राधिकरण अनुरोध में पारित OAuth क्लाइंट आईडी के लिए एक अधिकृत रीडायरेक्ट यूआरआई मेल नहीं खाता। समीक्षा में रीडायरेक्ट यूआरआई अधिकृत Google API Console Credentials page

पारित कर दिया redirect_uri ग्राहक प्रकार के लिए अमान्य हो सकता है।

चरण 4: OAuth 2.0 सर्वर प्रतिक्रिया को संभालें

जिस तरह से अपने आवेदन प्राधिकरण प्रतिक्रिया मिलती है पर निर्भर करता है कि रीडायरेक्ट URI योजना है कि इसे इस्तेमाल करता है। योजना के बावजूद, प्रतिक्रिया या तो एक प्राधिकरण कोड (शामिल होंगे code ) या कोई त्रुटि ( error )। उदाहरण के लिए, error=access_denied बताता है कि उपयोगकर्ता अनुरोध अस्वीकार कर दिया।

यदि उपयोगकर्ता आपके आवेदन तक पहुंच प्रदान करता है, तो आप अगले चरण में वर्णित अनुसार एक्सेस टोकन और रीफ्रेश टोकन के लिए प्राधिकरण कोड का आदान-प्रदान कर सकते हैं।

चरण 5: ताज़ा करने और टोकन तक पहुँचने के लिए प्राधिकरण कोड का आदान-प्रदान करें

पहुँच टोकन के एक प्राधिकरण कोड का आदान-प्रदान करने के लिए, फोन https://oauth2.googleapis.com/token endpoint और निम्न पैरामीटर सेट करें:

खेत
client_id ग्राहक आईडी से प्राप्त API ConsoleCredentials page
client_secret ग्राहक रहस्य से प्राप्त API ConsoleCredentials page
code प्रारंभिक अनुरोध से प्राधिकरण कोड लौटा।
code_verifier कोड आप सत्यापनकर्ता में बनाए गए चरण 1
grant_type के रूप में OAuth 2.0 विनिर्देश में परिभाषित , इस फ़ील्ड का मान पर सेट होनी चाहिए authorization_code
redirect_uri में अपनी परियोजना के लिए सूचीबद्ध रीडायरेक्ट यूआरआई में से एक API ConsoleCredentials page दिया के लिए client_id

निम्नलिखित स्निपेट एक नमूना अनुरोध दिखाता है:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=your_client_id&
client_secret=your_client_secret&
redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob%3Aauto&
grant_type=authorization_code

Google एक JSON ऑब्जेक्ट लौटाकर इस अनुरोध का जवाब देता है जिसमें एक अल्पकालिक एक्सेस टोकन और एक ताज़ा टोकन होता है।

प्रतिक्रिया में निम्नलिखित फ़ील्ड शामिल हैं:

खेत
access_token वह टोकन जिसे आपका एप्लिकेशन Google API अनुरोध को अधिकृत करने के लिए भेजता है।
expires_in एक्सेस टोकन का शेष जीवनकाल सेकंड में।
id_token नोट: यदि आपके अनुरोध के रूप में एक पहचान गुंजाइश, शामिल यह गुण केवल लौटा दिया जाता है openid , profile , या email । मान एक JSON वेब टोकन (JWT) है जिसमें उपयोगकर्ता के बारे में डिजिटल रूप से हस्ताक्षरित पहचान जानकारी होती है।
refresh_token एक टोकन जिसे आप एक नया एक्सेस टोकन प्राप्त करने के लिए उपयोग कर सकते हैं। रीफ्रेश टोकन तब तक मान्य होते हैं जब तक उपयोगकर्ता पहुंच को रद्द नहीं कर देता। ध्यान दें कि इंस्टॉल किए गए एप्लिकेशन के लिए ताज़ा टोकन हमेशा लौटाए जाते हैं।
scope उपयोग की स्कोप द्वारा दी गई access_token अंतरिक्ष-सीमांकित, केस-संवेदी स्ट्रिंग की एक सूची के रूप में व्यक्त किया।
token_type टोकन का प्रकार वापस आ गया। इस समय, इस फ़ील्ड का मान हमेशा के लिए सेट है Bearer

निम्नलिखित स्निपेट एक नमूना प्रतिक्रिया दिखाता है:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "token_type": "Bearer",
  "scope": "https://www.googleapis.com/auth/drive.metadata.readonly",
  "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

Google API को कॉल करना

आपके एप्लिकेशन को एक एक्सेस टोकन प्राप्त होने के बाद, आप किसी दिए गए उपयोगकर्ता खाते की ओर से Google API को कॉल करने के लिए टोकन का उपयोग कर सकते हैं यदि API द्वारा आवश्यक एक्सेस का दायरा प्रदान किया गया है। ऐसा करने के लिए पहुँच एपीआई के लिए एक अनुरोध में टोकन या तो एक को शामिल करके शामिल access_token क्वेरी पैरामीटर या एक Authorization HTTP हेडर Bearer मूल्य। जब संभव हो, HTTP शीर्षलेख बेहतर होता है, क्योंकि सर्वर लॉग में क्वेरी स्ट्रिंग्स दिखाई देने की प्रवृत्ति होती है। ज्यादातर मामलों में आप गूगल एपीआई के लिए अपने कॉल स्थापित करने के लिए एक क्लाइंट लाइब्रेरी का उपयोग कर सकते हैं (उदाहरण के लिए, जब ड्राइव फ़ाइलें एपीआई बुला )।

आप सभी को Google API बाहर कोशिश करते हैं और पर अपने कार्यक्षेत्रों देख सकते हैं OAuth 2.0 खेल का मैदान

HTTP उदाहरण प्राप्त करें

करने के लिए एक कॉल drive.files endpoint (ड्राइव फ़ाइलें एपीआई) का उपयोग करते हुए Authorization: Bearer HTTP हेडर ऐसा दिखाई दे सकता। ध्यान दें कि आपको अपना स्वयं का एक्सेस टोकन निर्दिष्ट करने की आवश्यकता है:

GET /drive/v2/files HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

यहाँ का उपयोग कर प्रमाणीकृत उपयोगकर्ता के लिए एक ही एपीआई के लिए एक कॉल है access_token क्वेरी स्ट्रिंग पैरामीटर:

GET https://www.googleapis.com/drive/v2/files?access_token=access_token

curl उदाहरण

आप के साथ इन आदेशों का परीक्षण कर सकते curl कमांड लाइन आवेदन। यहां एक उदाहरण दिया गया है जो HTTP शीर्षलेख विकल्प (पसंदीदा) का उपयोग करता है:

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/drive/v2/files

या, वैकल्पिक रूप से, क्वेरी स्ट्रिंग पैरामीटर विकल्प:

curl https://www.googleapis.com/drive/v2/files?access_token=access_token

एक्सेस टोकन को रीफ्रेश करना

एक्सेस टोकन समय-समय पर समाप्त हो जाते हैं और संबंधित एपीआई अनुरोध के लिए अमान्य क्रेडेंशियल बन जाते हैं। यदि आप टोकन से जुड़े क्षेत्रों में ऑफ़लाइन पहुंच का अनुरोध करते हैं, तो आप अनुमति के लिए उपयोगकर्ता को संकेत दिए बिना (जब उपयोगकर्ता मौजूद नहीं है) एक्सेस टोकन को रीफ्रेश कर सकते हैं।

पहुंच टोकन ताज़ा करने के लिए, आपके आवेदन एक HTTPS भेजता POST गूगल के प्राधिकरण सर्वर से अनुरोध ( https://oauth2.googleapis.com/token ) कि निम्न पैरामीटर शामिल हैं:

खेत
client_id ग्राहक आईडी से प्राप्त API Console
client_secret ग्राहक रहस्य से प्राप्त API Console। ( client_secret Android, iOS, या क्रोम अनुप्रयोगों के रूप में पंजीकृत ग्राहकों से अनुरोध करने के लिए लागू नहीं है।)
grant_type के रूप में OAuth 2.0 विनिर्देश में परिभाषित , इस फ़ील्ड का मान पर सेट होनी चाहिए refresh_token
refresh_token रिफ्रेश टोकन प्राधिकरण कोड एक्सचेंज से लौटा।

निम्नलिखित स्निपेट एक नमूना अनुरोध दिखाता है:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=your_client_id&
client_secret=your_client_secret&
refresh_token=refresh_token&
grant_type=refresh_token

जब तक उपयोगकर्ता ने एप्लिकेशन को दी गई पहुंच को रद्द नहीं किया है, तब तक टोकन सर्वर एक JSON ऑब्जेक्ट देता है जिसमें एक नया एक्सेस टोकन होता है। निम्नलिखित स्निपेट एक नमूना प्रतिक्रिया दिखाता है:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "https://www.googleapis.com/auth/drive.metadata.readonly",
  "token_type": "Bearer"
}

ध्यान दें कि जारी किए जाने वाले ताज़ा टोकन की संख्या की सीमाएँ हैं; एक सीमा प्रति ग्राहक/उपयोगकर्ता संयोजन, और दूसरी प्रति उपयोगकर्ता सभी ग्राहकों के लिए। आपको रिफ्रेश टोकन को लॉन्ग-टर्म स्टोरेज में सेव करना चाहिए और जब तक वे वैध रहते हैं तब तक उनका उपयोग करना जारी रखना चाहिए। यदि आपका एप्लिकेशन बहुत अधिक रीफ्रेश टोकन का अनुरोध करता है, तो यह इन सीमाओं में चल सकता है, इस स्थिति में पुराने रीफ्रेश टोकन काम करना बंद कर देंगे।

एक टोकन रद्द करना

कुछ मामलों में कोई उपयोगकर्ता किसी एप्लिकेशन को दी गई पहुंच को रद्द करना चाह सकता है। एक उपयोगकर्ता पर जाकर पहुंच निरस्त कर सकते खाता सेटिंग्स । देखें अपने खाते की पहुंच के साथ तृतीय-पक्ष साइटों और क्षुधा की निकालें साइट या एप्लिकेशन का उपयोग अनुभाग में अधिक जानकारी के लिए समर्थन दस्तावेज।

किसी एप्लिकेशन के लिए उसे दी गई पहुंच को प्रोग्रामेटिक रूप से निरस्त करना भी संभव है। प्रोग्रामेटिक निरसन उन उदाहरणों में महत्वपूर्ण है जहां कोई उपयोगकर्ता सदस्यता समाप्त करता है, किसी एप्लिकेशन को हटा देता है, या किसी ऐप के लिए आवश्यक API संसाधन महत्वपूर्ण रूप से बदल गए हैं। दूसरे शब्दों में, हटाने की प्रक्रिया के हिस्से में एक एपीआई अनुरोध शामिल हो सकता है ताकि यह सुनिश्चित किया जा सके कि आवेदन को पहले दी गई अनुमतियों को हटा दिया गया है।

प्रोग्राम के रूप में एक टोकन निरस्त करने के लिए, आपके आवेदन से एक अनुरोध करता https://oauth2.googleapis.com/revoke और एक पैरामीटर के रूप टोकन में शामिल हैं:

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis.com/revoke?token={token}

टोकन एक एक्सेस टोकन या रीफ्रेश टोकन हो सकता है। यदि टोकन एक एक्सेस टोकन है और उसके पास संबंधित रीफ्रेश टोकन है, तो रीफ्रेश टोकन भी निरस्त कर दिया जाएगा।

निरसन सफलतापूर्वक संसाधित है, तो प्रतिक्रिया का HTTP स्थिति कोड है 200 । त्रुटि की स्थिति के लिए, HTTP स्थिति कोड 400 एक त्रुटि कोड के साथ दिया जाता है।

आगे की पढाई

IETF बेस्ट वर्तमान अभ्यास मूल निवासी Apps के लिए OAuth 2.0 यहाँ प्रलेखित सर्वोत्तम प्रथाओं के कई स्थापित करता है।