हम अपने डोमेन में खातों को पुनर्प्राप्त करने, अपडेट करने और बनाने में सक्षम होने के लिए Google Admin SDK के साथ एकीकरण बनाने का प्रयास कर रहे हैं। हालाँकि, हम एक 403 त्रुटि प्राप्त करते रहते हैं जो यह दर्शाता है कि हम संसाधन/एपीआई तक पहुँचने के लिए अधिकृत नहीं हैं।

हम एक सेवा खाते से प्राप्त क्रेडेंशियल का उपयोग कर रहे हैं जिसमें प्राधिकरण का डोमेन-व्यापी प्रतिनिधिमंडल सक्षम है और निम्नलिखित दो क्षेत्र हैं: https://www.googleapis.com/auth/admin.directory.user। केवल पढ़ने के लिए, https://www.googleapis.com/auth/admin. निर्देशिका.उपयोगकर्ता. हम JWT (जिसमें ये दो स्कोप भी शामिल हैं) बना रहे हैं और फिर https:/ को एक अनुरोध भेज रहे हैं। /www.googleapis.com/oauth2/v4/token पहुंच टोकन पुनर्प्राप्त करने के लिए।

फिर हम https को अनुरोध भेजने के लिए एक्सेस टोकन का उपयोग कर रहे हैं: //www.googleapis.com/admin/directory/v1/users?domain=XXXX.com। हम एक्सेस टोकन को बियरर टोकन के रूप में शामिल कर रहे हैं, हेडर का हिस्सा। प्रतिक्रिया में हमें निम्न संदेश मिल रहा है:

{
    "error": {
        "errors": [
            {
                "domain": "global",
                "reason": "forbidden",
                "message": "Not Authorized to access this resource/api"
            }
        ],
        "code": 403,
        "message": "Not Authorized to access this resource/api"
    }
}

क्या यह स्पष्ट करना संभव है कि हम गलत क्या कर रहे हैं?

3
Christian Bartolo 3 सितंबर 2019, 16:11
आप किस भाषा का उपयोग कर रहे हैं? आप Google शपथ सर्वर को कैसे कॉल कर रहे हैं?
 – 
Coder
3 सितंबर 2019, 16:19
मैं इस समय सब कुछ मैन्युअल रूप से कर रहा हूं और अनुरोध भेजने के लिए डाकिया का उपयोग कर रहा हूं।
 – 
Christian Bartolo
3 सितंबर 2019, 16:44
मुझे यह देखना अच्छा लगेगा कि आप डाकिया के साथ एक सेवा खाते को कैसे अधिकृत कर रहे हैं मैं इसे कभी भी काम नहीं कर पाया।
 – 
DaImTo
3 सितंबर 2019, 16:49
मैं एक JWT जेनरेट करने के लिए जावा का उपयोग कर रहा हूं, जिसका उपयोग मैं googleapis.com/ पर कॉल भेजने के लिए करता हूं। oauth2/v4/token जो एक access_token पुनर्प्राप्त करता है। मैं फिर access_token की प्रतिलिपि बनाता हूं और उपयोगकर्ताओं को पुनर्प्राप्त करने के लिए एक अनुरोध भेजता हूं, जिसके जवाब में मुझे अनधिकृत संदेश मिलता है।
 – 
Christian Bartolo
3 सितंबर 2019, 16:55

2 जवाब

सबसे बढ़िया उत्तर

समस्या यह थी कि जेडब्ल्यूटी में sub फ़ील्ड शामिल होना चाहिए: उपयोगकर्ता का ईमेल पता जिसके लिए एप्लिकेशन प्रत्यायोजित पहुंच का अनुरोध कर रहा है।

1
Christian Bartolo 4 सितंबर 2019, 15:33

इसे काम करने के लिए आपको डोमेन वाइड डेलिगेशन ऐसा करने से आपके सेवा खाते के पास विचाराधीन डेटा तक पहुंच होगी।

  1. तालिका में नव-निर्मित सेवा खाते का पता लगाएँ। कार्रवाइयों के तहत, more_vert पर क्लिक करें और फिर संपादित करें पर क्लिक करें।
  2. सेवा खाते के विवरण में, विस्तृत करें_अधिक डोमेन-व्यापी प्रतिनिधिमंडल दिखाएं क्लिक करें, फिर सुनिश्चित करें कि G Suite डोमेन-व्यापी प्रतिनिधिमंडल सक्षम करें चेकबॉक्स चेक किया गया है।
  3. यदि आपने अभी तक अपने ऐप की OAuth सहमति स्क्रीन को कॉन्फ़िगर नहीं किया है, तो डोमेन-व्यापी प्रतिनिधिमंडल को सक्षम करने से पहले आपको ऐसा करना होगा। OAuth सहमति स्क्रीन को कॉन्फ़िगर करने के लिए ऑन-स्क्रीन निर्देशों का पालन करें, फिर उपरोक्त चरणों को दोहराएं और चेकबॉक्स को दोबारा जांचें।
  4. सेवा खाते को अद्यतन करने के लिए सहेजें क्लिक करें, और सेवा खातों की तालिका पर वापस लौटें। एक नया कॉलम, डोमेन-व्यापी प्रतिनिधिमंडल देखा जा सकता है। क्लाइंट आईडी प्राप्त करने और उसे नोट करने के लिए क्लाइंट आईडी देखें पर क्लिक करें।
1
DaImTo 3 सितंबर 2019, 16:48
** संपादित करें: OAuth स्क्रीन कॉन्फ़िगर की गई है और सेवा खाते पर डोमेन वाइड डेलिगेशन भी सक्षम है।
 – 
Christian Bartolo
3 सितंबर 2019, 17:08
ठीक से नहीं या आपको वह त्रुटि नहीं मिल रही होगी जो आपको बता रही है कि आपके पास पहुंच नहीं है
 – 
DaImTo
3 सितंबर 2019, 19:59
तो समस्या Google API के अनुरोधों के बजाय वास्तविक सेवा खाते की स्थापना से आ रही है?
 – 
Christian Bartolo
4 सितंबर 2019, 09:22
वास्तव में सेवा खाते को उस संसाधन तक पहुंचने की अनुमति नहीं है जिसे आप एक्सेस करने का प्रयास कर रहे हैं। इसे डोमेन वाइड डेलिगेशन के सेटअप में परिभाषित किया गया है। कोशिश करें और जांचें।
 – 
DaImTo
4 सितंबर 2019, 09:27
जैसा कि आपने ऊपर बताया है, डोमेन वाइड डेलिगेशन सेट किया गया था, हमने ऐप OAuth स्क्रीन में "स्कोप फॉर गूगल एपीआई" सेक्शन में भी जोड़ा। हालांकि, वही त्रुटि वापस की जा रही है। मैंने इस URL पर एक POST कॉल भी भेजी है: googleapis.com/oauth2/v1 /tokeninfo?access_token= जो एक्सेस टोकन की जानकारी को सफलतापूर्वक लौटाता है। इसलिए यह दर्शाता है कि यह काम कर रहा है। व्यवस्थापक एसडीके को अनुरोध भेजते समय, हेडर के बियरर टोकन भाग के रूप में केवल एक्सेस टोकन को जोड़ने की आवश्यकता होती है, है ना?
 – 
Christian Bartolo
4 सितंबर 2019, 15:04