google calendar - रीफ्रेश टोकन google api प्राप्त करें




google-calendar token (5)

मुझे अपने कोड के साथ मेरा ताज़ा टोकन नहीं मिल सकता है। मुझे केवल मेरा एक्सेस टोकन, टोकन टाइप इत्यादि मिल सकता है, मैंने कुछ लॉगिन ट्यूटोरियल का पालन किया है जैसे मेरे लॉगिन यूआरएल पर access_type=offline :

echo "<a href='https://accounts.google.com/o/oauth2/auth?" 
    . "access_type=offline&client_id=123345555.apps.googleusercontent.com& "
    . "scope=https://www.googleapis.com/auth/calendar+https://www.googleapis.com/auth/plus.me&response_type=code& "
    . "redirect_uri=http://www.sample.com/sample.php&state=/profile'>Google</a>";

और मेरे खेतों तक पहुंच टोकन प्राप्त करने में:

$fields=array(
    'code'=>  urlencode($authcode),
    'client_id'=> urlencode($clientid),
    'client_secret'=> urlencode($clientsecret),
    'redirect_uri'=> urlencode($redirecturi),
    'grant_type'=> 'authorization_code',
);

लेकिन मुझे refresh_token नहीं मिल सकता है , बस access_token , token_type , id_token और expires_in


अगर मैं user987361 के उत्तर पर विस्तार कर सकता हूं:

OAuth2.0 दस्तावेज़ों के ऑफ़लाइन पहुंच भाग से:

जब आपके एप्लिकेशन को रीफ्रेश टोकन प्राप्त होता है, तो भविष्य में उपयोग के लिए रीफ्रेश टोकन को स्टोर करना महत्वपूर्ण है। यदि आपका एप्लिकेशन रीफ्रेश टोकन खो देता है, तो उसे किसी अन्य रीफ्रेश टोकन प्राप्त करने से पहले सहमति के लिए उपयोगकर्ता को फिर से संकेत देना होगा। यदि आपको सहमति के लिए उपयोगकर्ता को पुनः संकेत देने की आवश्यकता है, तो प्राधिकरण कोड अनुरोध में approval_prompt पैरामीटर शामिल करें, और मूल्य को force सेट करें।

इसलिए, जब आप पहले से ही पहुंच प्रदान कर चुके हैं, तो grant_type के grant_type के लिए बाद के अनुरोध grant_type वापस नहीं लौटेंगे, भले ही access_type सहमति पृष्ठ की क्वेरी स्ट्रिंग में offline सेट किया गया हो।

जैसा कि उपरोक्त उद्धरण में बताया गया है, पहले से ही एक प्राप्त करने के बाद एक नया refresh_token प्राप्त करने के लिए, आपको अपने उपयोगकर्ता को प्रॉम्प्ट के माध्यम से वापस भेजने की आवश्यकता होगी, जिसे आप force approval_prompt सेट करके कर सकते हैं।

चीयर्स,

पीएस इस परिवर्तन की घोषणा ब्लॉग पोस्ट में भी की गई थी।


इसे अपने यूआरएल पैरामीटर में जोड़कर पता चला

approval_prompt = बल


यह access_type=offline जो आप चाहते हैं।

यह पहली बार रीफ्रेश टोकन वापस करेगा जब उपयोगकर्ता ऐप को अधिकृत करता है। बाद की कॉल आपको ऐप को फिर से स्वीकृति देने के लिए मजबूर नहीं करती है ( approval_prompt=force )।

और विवरण देखें: https://developers.google.com/accounts/docs/OAuth2WebServer#offline


यह Google आधिकारिक एसडीके का उपयोग कर PHP में पूरा कोड है

$client = new Google_Client();
## some need parameter
$client->setApplicationName('your application name');
$client->setClientId('****************');
$client->setClientSecret('************');
$client->setRedirectUri('http://your.website.tld/complete/url2redirect');
$client->setScopes('https://www.googleapis.com/auth/userinfo.email');
## these two lines is important to get refresh token from google api
$client->setAccessType('offline');
$client->setApprovalPrompt('force'); # this line is important when you revoke permission from your app, it will prompt google approval dialogue box forcefully to user to grant offline access

हाय मैंने निम्नलिखित चरणों का पालन किया और मैं रीफ्रेश टोकन प्राप्त करने में सक्षम था।

प्राधिकरण प्रवाह में दो कदम हैं।

  1. https://accounts.google.com/o/oauth2/auth? का उपयोग कर प्राधिकरण कोड प्राप्त करना है https://accounts.google.com/o/oauth2/auth? यूआरएल।

    इसके लिए एक पोस्ट अनुरोध निम्नलिखित पैरामीटर प्रदान किया जाता है। 'scope=' + SCOPE + '&client_id=' + CLIENTID + '&redirect_uri=' + REDIRECT + '&response_type=' + TYPE + '&access_type=offline' उपरोक्त प्रदान करना एक प्राधिकरण कोड प्राप्त होगा।

  2. Https://accounts.google.com/o/oauth2/token का उपयोग करके AcessToken और RefreshToken को पुनर्प्राप्त करना https://accounts.google.com/o/oauth2/token? यूआरएल। इसके लिए एक पोस्ट अनुरोध निम्नलिखित पैरामीटर प्रदान किया जाता है।

    "कोड": कोड, "client_id": सीआईडी, "client_secret": सीएसईसीआरईटी, "redirect_uri": रेडियरेक्ट, "grant_type": "authorization_code",

तो एक बार जब आप अनुमतियों को अधिकृत करते हैं तो आपके पहले प्रयास में आप ताज़ा टोकन प्राप्त कर पाएंगे। बाद के प्रयास ताज़ा टोकन प्रदान नहीं करेंगे। यदि आप टोकन को फिर से एप्लिकेशन में एक्सेस को निरस्त करना चाहते हैं।

उम्मीद है कि यह किसी चीयर्स की मदद करेगा :)





gdata