मैंने एक क्रोम एक्सटेंशन बनाया है जो mail.google.com पेज पर काम करता है और ईमेल प्रबंधित करने के लिए गैपी का उपयोग करता है, और अगर क्रोम उपयोगकर्ता जीमेल उपयोगकर्ता से मेल नहीं खाता है तो यह अच्छा नहीं कर रहा है।

इसका कारण यह है कि मुझे chrome.identity.getAuthToken से एक access_token मिल रहा है जो मुझे एक क्रोम वर्तमान उपयोगकर्ता प्रदान करता है, लेकिन एक जीमेल नहीं।

मैंने जीमेल उपयोगकर्ताओं को टोकन तक पहुंचने के लिए अपने एक्सटेंशन में gapi.auth2 का उपयोग करने का प्रयास किया है, लेकिन बिना किसी किस्मत के:

  • जब background.js से उपयोग किया जाता है तो उसे "gapi.auth2.ExternallyVisibleError: अमान्य कुकी नीति" त्रुटि मिलती है

  • जब सामग्री से समान कोड का उपयोग किया जाता है। जेएस इसे "गैपी अपरिभाषित" त्रुटि मिलती है।

क्या मौजूदा जीमेल उपयोगकर्ता से एक्सेस_टोकन प्राप्त करने का कोई तरीका है, क्रोम नहीं?

1
S.Pan 17 नवम्बर 2018, 15:18

1 उत्तर

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

Chrome.identity.launchWebAuthFlow ने मेरे लिए काम किया।

Oauth2 url बनाएं:

var url = 'https://accounts.google.com/o/oauth2/auth' +
        '?client_id=' + clientId +
        '&response_type=token' + 
        '&redirect_uri=' + redirectUri +
        '&login_hint=' + email +
        '&scope=' + scopes;

जहां redirectUri https://<your extension id>.chromiumapp.org/oauth2 है और इसे अधिकृत रीडायरेक्ट URI (डेवलपर्स कंसोल में) की सूची में होना चाहिए। मैंने यहां थोड़ा संघर्ष किया है, क्योंकि शुरू में मैंने "क्रोम ऐप" क्रेडेंशियल बनाए हैं और कोई अधिकृत रीडायरेक्ट यूआरआई का विकल्प नहीं था, इसलिए मैंने "वेब ऐप" क्रेडेंशियल्स पर स्विच किया।

ईमेल वर्तमान उपयोगकर्ता ईमेल है। ईमेल निर्दिष्ट करना संवाद को छोड़ने में मदद करता है यदि उपयोगकर्ता ने पहले ही अनुमति दे दी है।

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

फिर लॉन्चवेबएथफ्लो चलाएं:

 chrome.identity.launchWebAuthFlow({
     'url': url,
     'interactive': true
    }, function (redirectedTo) {
       // check errors and get token from redirect url
 });
1
S.Pan 10 पद 2018, 14:22