2012-05-09 7 views
22

पुराने Google ओपनिड के साथ, जब मैंने उपयोगकर्ता को भेजा (जिसे पहले मेरे ऐप में चुना गया था) तो ऑथ यूआरएल में, यह होगा तुरंत उन्हें अपने ऐप पर रीडायरेक्ट करें।Google OAuth2 उपयोगकर्ता को अनुमति के लिए फिर से पूछता है जब मैं उन्हें यूआरएल यूआरएल को भेजता हूं

अब, ओएथ 2 के साथ, यूथ यूआरएल उपयोगकर्ता को अनुमति के लिए पूछता रहता है। मैं इस पर डॉक्स के कुछ पढ़ा है, लेकिन मैं क्या मिलता है न कि यह कैसे प्रवाह मैं चाहिए काम करने के लिए है: गूगल में

  1. उपयोगकर्ता लॉग मेरी एप्लिकेशन के माध्यम से और क्लिक्स
  2. दिन बाद अनुमतियों के लिए अनुमति देते हैं, कुकी साफ़ कर रहे हैं , उपयोगकर्ता वापस अपनी साइट के लिए आता है, क्लिक
  3. उपयोगकर्ता फिर से अनुमति के लिए कहा नहीं है और वे तुरंत में लॉग इन किया "गूगल पर लॉगिन करें"।

मुझे लगता है कि यह प्रमाणीकरण टोकन भंडारण या के साथ कुछ है चरण 1, में टोकन रीफ्रेश करें लेकिन चरण 3 में, मुझे नहीं पता कि वे कौन हैं हैं, तो मैं वैध पहुंच टोकन प्राप्त करने के लिए उचित लेख के साथ कैसे मिलान कर सकता हूं या टोकन रीफ्रेश कर सकता हूं।

मेरे परीक्षणों में, जब मैं उन्हें चरण 1 में मूल ऑथ यूआरएल में भेजता हूं, तो उन्हें फिर से अनुमतियों के लिए कहा जाता है।

संपादित करें: मिला समाधान

गूगल-api डालता है "approval_prompt = बल" डिफ़ॉल्ट रूप से जब प्रमाणन URL बनाने में।

उत्तर

23

हां जैसा कि आपने स्वीकृति_प्रोम्प्ट = बल URL पैरामीटर का उपयोग करके नोट किया है, हर बार उपयोगकर्ता को ऑथ संवाद दिखाएगा। इस यूआरएल पैरामीटर को हटाकर उपयोगकर्ता को बाद के ऑथ प्रवाह पर संकेत नहीं दिया जाएगा।

यदि आप सर्वर साइड फ्लो (response_type = code) और ऑफ़लाइन एक्सेस (access_type = ऑफ़लाइन) का उपयोग करते हैं तो प्रतिक्रिया में थोड़ा सा अंतर होता है। पहली बार जब उपयोगकर्ता आपको अधिकृत करता है (जब वह अनुमोदन स्क्रीन देखता है) या यदि आप appr_prompt = बल का उपयोग कर इसे मजबूर करते हैं तो जब आप ऑथ कोड का आदान-प्रदान करते हैं तो आपको एक refresh_token और access_token दिया जाएगा।

हालांकि प्रत्येक बार जब उपयोगकर्ता अनुमोदन स्क्रीन (अनुमोदन_प्रोम्प्ट = बल का उपयोग नहीं करते हैं) के बाद दिखाई नहीं देता है, तो ऑथ कोड का आदान-प्रदान करते समय आपको केवल एक access_token दिया जाएगा, कोई refresh_token नहीं होगा। तो यदि वह प्रवाह है जिसका आप उपयोग कर रहे हैं और यदि आप उपयोगकर्ता के डेटा ऑफ़लाइन तक पहुंचने में सक्षम होना चाहते हैं तो आपको यह सुनिश्चित करने की ज़रूरत है कि आप इसे पहली बार रीफ्रेश_टोकन को भविष्य में उपयोग के लिए स्थानीय रूप से सहेज लें। यह केवल तभी होने की संभावना है जब आप केवल ऑथ डेटा की तुलना में अन्य प्रकार के डेटा तक पहुंच का अनुरोध करते हैं (ओएथ 2 प्रवाह का उपयोग करके आप अन्य डेटा तक पहुंच का अनुरोध कर सकते हैं उदाहरण के लिए संपर्क API डेटा, कैलेंडर API डेटा, ड्राइव डेटा इत्यादि ...) आमतौर पर एक नियमित ओपन आईडी प्रवाह ऑफ़लाइन पहुंच की आवश्यकता नहीं होगी।

+3

मैंने इसे Google ऑटो के रूप में 'ऑटो' पर सेट कर दिया है। लेकिन दुख की बात है कि यह हमेशा अनुमतियों के लिए फिर से पूछता है। – dyoser

+1

हाय डाइसर, मुझे एक ही समस्या है। क्या आपको यह तय करने का मौका मिला? – javadev

+0

आपको टोकन के लिए कोड का आदान-प्रदान करके प्रक्रिया पूरी करनी है, तो ऐप यहां https://security.google की सूची में दिखाई देगा।कॉम/सेटिंग्स/सुरक्षा/अनुमतियां और उपयोगकर्ताओं को अनुमतियों के लिए फिर से नहीं पूछा जाएगा। – zavr

0

अनुरोध 'approval_prompt=auto' अनुरोध में एक अतिरिक्त पैरामीटर पास करने के लिए मेरे लिए काम किया।

0

मेरे लिए यह hd (होस्टेड डोमेन) पैरामीटर था। प्राधिकरण यूआरएल से हटाने के बाद मुझे उपयोगकर्ताओं के लिए ऑथ चुनने की सूची दी गई थी। hd पैरामीटर पर अधिक जानकारी https://developers.google.com/identity/protocols/OpenIDConnect#hd-param

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