2016-01-22 10 views
5

मैं Google दस्तावेज़ में दिखाए गए सर्वर-साइड ऐप्स के लिए Google साइन-इन को लागू करने का प्रयास कर रहा हूं: Google Sign-In for server-side apps, लेकिन सहमति विंडो कभी ऑफ़लाइन पहुंच के लिए नहीं पूछती है। उपयोगकर्ता चुनने के बाद यह बंद हो जाता है और साइन इन हैंडलर फ़ंक्शन को कॉल करता है।Google जावास्क्रिप्ट साइन-इन एपीआई: कोई ऑफ़लाइन एक्सेस

नतीजतन, जब मुझे एक बार कोड मिलता है और इसे सर्वर पर भेजता है, तो मैं इसे रीफ्रेश टोकन, केवल एक्सेस और आईडी टोकन के लिए रीफ्रेश नहीं कर सकता।

HTML फ़ाइल में:

<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script> 

Javascript कोड:

var auth2; 
function init() { 
    gapi.load('auth2', function() { 
     auth2 = gapi.auth2.init({ 
      client_id: '<my client id>.apps.googleusercontent.com', 
      scope: 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.appfolder' 
     }); 
    }); 
    $('#signinButton').click(function() { 
     auth2.grantOfflineAccess({'redirect_uri': 'postmessage'}).then(onSignIn); 
    }); 
} 

function onSignIn(authResult) { 
    if (authResult['code']) { 
    // Send the code to the server 
    } 
} 

गूगल कंसोल में प्रोजेक्ट एक वेब ग्राहक क्रेडेंशियल शामिल

यहाँ मेरे मुवक्किल कोड है प्रासंगिक जावास्क्रिप्ट मूल के साथ और कोई अधिकृत रीडायरेक्ट यूआरआई के साथ।

मुझे पर क्या करना चाहिए, सहमति विंडो को ऑफ़लाइन पहुंच के लिए पूछने के लिए मजबूर करना चाहिए?

उत्तर

7

मैं पैरा 'approval_prompt' : 'force' को auth2.grantOfflineAccess फ़ंक्शन कॉल जोड़कर ऑफ़लाइन के लिए प्रॉम्प्ट को मजबूर करने में सक्षम हूं।

उदा।

auth2.grantOfflineAccess({'redirect_uri' : 'postmessage', 'approval_prompt' : 'force'}).then(onSignIn);

+0

धन्यवाद मैल! यह वास्तव में हर बार ऑफलाइन पहुंच के लिए पूछता है और मेरे पास रीफ्रेश टोकन है। – burgi

+0

यह देखने के लिए खुशी हुई कि यह @burgi काम करता है! बीटीडब्ल्यू, क्या आप सर्वर साइड लॉगिन के साथ incremental auth प्रदान करने में सक्षम हैं? मैं इस समस्या में फंस गया हूं: http://stackoverflow.com/questions/35023983/incremental-combined- प्राधिकरण-with-google-signin-for-server-side-apps और हर नए दायरे से मैं उपयोगकर्ता को अधिकृत करने के लिए कहता हूं, परिणाम टोकन पिछले अधिकृत स्कॉप्स को ओवरराइड करता है ... – Mael

+0

क्षमा करें @ माइल, मैं incremental auth का उपयोग नहीं कर रहा हूं। मेरे व्यापार तर्क को उन्नत में सभी अनुमतियां प्राप्त करने की आवश्यकता है। – burgi

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