2015-01-20 9 views
7

मैं Google OAuth2 api का उपयोग करके उपयोगकर्ता की प्रोफ़ाइल लाने की कोशिश कर रहा हूं। उपयोगकर्ता प्रमाणीकरण के बाद, सहमति के पृष्ठ पर, मैं हमेशा "है ऑफ़लाइन पहुँच" के लिए कहा रहा हूँहमेशा "ऑफ़लाइन एक्सेस करें" | Google OAuth 2

ब्राउज़र में URL की तरह दिखता है: -

https://accounts.google.com/o/oauth2/auth? गुंजाइश = ईमेल & response_type = कोड & redirect_uri = https://localhost/google_oauth2_login&state=YbzrDo&client_id=asdfasdf-60qhnqf6asdfasdfasdfcopo3plhoj.apps.googleusercontent.com&hl=en-US&from_login=1&as=604c0f3asdfasdf

ऊपर URL में के रूप में दिखाई दे रहा है, मैं बीत चुके हैं गुंजाइश पैरामीटर के रूप में 'ईमेल'

Google Auth API पेज का कहना है: -

"यह दायरा अनुरोध है कि आपके ऐप को इस तक पहुंच दी जाए:

उपयोगकर्ता का Google खाता ईमेल पता। आप people.get को कॉल करके ईमेल पता पर पहुंचते हैं, जो ईमेल सरणी देता है (या लोगों को कॉल करके .getOpenIdConnect, जो ओआईडीसी-अनुरूप प्रारूप में ईमेल प्रॉपर्टी देता है)। Google Apps डोमेन का नाम, यदि कोई है, तो जो उपयोगकर्ता से संबंधित है। डोमेन नाम को डोमेन लोगों के रूप में वापस किया जाता है .get (या getOpenIdConnect से एचडी प्रॉपर्टी)। यह ईमेल गुंजाइश के बराबर है और https://www.googleapis.com/auth/userinfo.email गुंजाइश बदल देता है। "

क्यों मैं ऑफ़लाइन पहुँच के लिए हर बार पूछा रहा हूँ?

enter image description here

Google API Console Page for WEB APPLICATION

+2

यह तब होता है जब बकाया टोकन हों। इसे हल करने के लिए उन्हें रद्द करें। यहां http://stackoverflow.com/questions/21405274/this-app-would-like-to-have-offline-access-when-access-type-online/29267449#29267449 – amwinter

उत्तर

0

लगता है कि आप पंजीकृत किया है आपके ग्राहक को "वेब एप्लिकेशन" के बजाय "मूल एप्लिकेशन" के रूप में। मूल ऐप्स डिफ़ॉल्ट रूप से रीफ्रेश टोकन प्राप्त करते हैं जो एक लंबे समय तक चलने वाला टोकन होता है, जिसके लिए संसाधन स्वामी इसके अंतर्निहित सुरक्षा प्रभावों के कारण अधिसूचना और सहमति स्क्रीन प्राप्त होती है। अपने ग्राहक प्रकार को "वेब अनुप्रयोग" यह सोचते हैं कि यह क्या है है ... बदले

+0

मैंने स्क्रीनशॉट के साथ प्रश्न अपडेट किया है मेरा गूगल कंसोल पेज। मैंने जेनरेट क्लाइंट आईडी का उपयोग किया है और केवल 'वेब एप्लिकेशन के लिए क्लाइंट आईडी' के लिए seceret है। –

+0

शायद आप एक नए जेनरेट किए गए क्लाइंट_आईडी के साथ प्रयास कर सकते हैं और दोबारा जांच कर सकते हैं कि प्रमाणीकरण अनुरोध में client_id सही है (= नया) एक? –

+0

-1 उत्तर गलत है या गायब अग्रणी मूल और वेब ऐप्स दोनों रीफ्रेश टोकन लौटाएंगे। वेब को आपूर्ति access_type ऑफ़ लाइन की आवश्यकता हो सकती है यदि आप क्लाइंट lib का उपयोग कर रहे हैं जो PHP कहने जैसा छुपाता है। – DaImTo

1

दो पैरामीटर जो यह संकेत पैदा कर सकता है कर रहे हैं:

  • access_type (अगर यह 'ऑफ़लाइन' है, ताज़ा टोकन प्राप्त)
  • approval_prompt (अगर यह होता है 'शक्ति')

इस बारे में एक संदर्भ here पाया जा सकता है।

स्वीकृति_प्रोप्ट पैरामीटर को 'ऑटो' में बदलने या इसे अपने अनुरोध में जोड़ने का प्रयास करें और 'ऑनलाइन' पर access_type पैरामीटर को जांचें या इसे अपने अनुरोध में जोड़ें।

+0

में हस्तक्षेप कर रहा है मुझे आश्चर्य है कि यह जानकारी चालू है या नहीं। मैं ऑफ़लाइन पहुंच प्राप्त करने का प्रयास कर रहा हूं। मैं 'access_type = ऑफ़लाइन 'और' approval_prompt = force' सेट कर रहा हूं और अभी भी कोई खुशी नहीं है। – Qasim

2

यदि आप नोड js मॉड्यूल 'everyauth' का उपयोग कर रहे हैं, आप द्वारा

.authQueryParam({ access_type:'online', approval_prompt:'auto' }) 
9

Googles डिफ़ॉल्ट मान ओवरराइड कर सकते हैं मैं एक ही समस्या है, और एक लंबे समय के लिए googling के बाद, मैं इस लिंक मिल गया था:

"This app would like to: Have offline access" when access_type=online

यह redirect_uri में 'स्थानीय होस्ट' दूर करने के लिए सुझाव देते हैं, और यह मेरे लिए काम करता है।

+1

मुझे उस पृष्ठ पर कहीं भी "लोकलहोस्ट" दिखाई नहीं दे रहा है। क्या लिंक सही है? – Bampfer

+0

यह मेरे लिए काम करता है, हालांकि मुझे उस लिंक में कोई संबंधित जानकारी भी नहीं मिली है। –

+0

यह काम करता है! मैंने अपनी मेजबान फ़ाइल संपादित की और लाइन '127.0.0.1 localhost.com' जोड़ा और रीडायरेक्ट_री को मिलान करने के लिए बदल दिया – Subtletree

7

क्योंकि आप http (s) पर वापस रीडायरेक्ट कर रहे हैं: // localhost: /। यह समझ में आता है क्योंकि स्थानीय ऐप को पुनर्निर्देशन का अनुरोध करने वाला कोई भी ऐप स्पष्ट रूप से स्थानीय रूप से चल रहा है।

इसे सार्वजनिक वेब पते पर रीडायरेक्ट करें और इससे आपको परेशान नहीं होगा।

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