9

मैं टोकन रीफ्रेश कैसे कर सकता हूं? मैं इस टोकन के साथ Google एपीआई का उपयोग करता हूं - यह काम करता है लेकिन इसे रीफ्रेश करने का तरीका नहीं मिल सकता है, इस उदाहरण में हम समय समाप्त नहीं करते हैं। मैं की आवश्यकता होती हैताज़ा करें oauth2 टोकन google api और HWIOAuthBundle

`access_type:  offline ` 

तो

$client = new Google_Client(); 
     //$client->setClientId($GoogleClientId); 
     $client->setApplicationName($GoogleAppName); 
     $client->setClientId($this->user->getGoogleId()); 
     $client->setAccessType('offline'); 

यदि टोकन मान्य मैं काम कर सकते हैं है, लेकिन जब समाप्त हो गई है मैं

$token = [ 
      'access_token' => $this->user->getGoogleAccessToken(), 
      'expires_in' => (new \DateTime())->modify('-1 year')->getTimestamp(), 
     ]; 

मैं क्योंकि इस उदाहरण में हम डॉन 'यह किसी भी तारीख डाल कोशिश समय समाप्त हो गया समय बचाएं

https://gist.github.com/danvbe/4476697

$client->setAccessToken($token); 

    if($client->isAccessTokenExpired()){ 

     $refreshedToken = $client->refreshToken($client->getAccessToken()); 
यहाँ

मैं त्रुटि

array:2 [▼ 
    "error" => "invalid_request" 
    "error_description" => "Could not determine client ID from request." 
] 

वहाँ टोकन ताज़ा करने के लिए HwiAuthBundle विधि है? यह Google_Client रीफ्रेश के साथ क्यों काम नहीं करता है?

+0

एक getGoogleId क्या नहीं है: मैं तुम्हें एक OAuth क्लाइंट आईडी बनाने के लिए भी जरूरत है? क्लाइंट आईडी Google डेवलपर कंसोल से क्लाइंट आईडी है जिसका उपयोग आप रीफ्रेश टोकन बनाने के लिए करते हैं। – DaImTo

+1

यदि आपने यह धागा नहीं देखा है, फिर भी, ऐसा लगता है कि वे उस बंडल के लिए ताज़ा टोकन को कम प्राथमिकता मानते हैं: https://github.com/hwi/HWIOAuthBundle/issues/457 तो, कुल प्लग और प्ले समाधान, यह नहीं है। –

उत्तर

-2

आपको अमीगो परेशान करने के लिए खेद है, लेकिन ऐसा लगता है कि पैकेज किसी भी ताज़ा टोकन कार्यक्षमता को लागू नहीं करता है। या यह आप के लिए छोड़ दिया है।

यह सुविधा मौजूद है, अभी तक इसके लिए कोई आसान उपयोग के रूप में आप की जरूरत है: https://github.com/hwi/HWIOAuthBundle/issues/457

यहाँ मुद्दे से एक टिप्पणी है:

यहाँ उनके GitHub में खुला मुद्दा है, है एक नज़र है अपने आप सबकुछ करें (टोकन के बारे में अधिक जानकारी संग्रहीत करने के साथ, समाप्ति का पता लगाने, Google को नया टोकन प्राप्त करने के लिए बुलाते हुए, और पुराना स्थानांतरित करने के लिए), केवल इस बंडल से सहायता करें, यह कोड है कि आपको Google से पूछने की अनुमति देता है नए ताजा टोकन के लिए: GenericOAuth2ResourceOwner :: refreshToken(), यह उन्हें दिखाने के लिए के रूप में काम करना चाहिए की उम्मीद है, लेकिन मैं लंबे समय के लिए इस बंडल इस्तेमाल नहीं किया है =)

लोग वहाँ एक सार पर इंतजार कर रहे हैं (कोड का स्निपेट) ऐसा करने के लिए, लेकिन अभी तक कुछ नहीं।

+0

पूरी तरह से सच नहीं है। यह एक टोकन रीफ्रेश करने के लिए सुविधा [एक विधि] (https://github.com/hwi/HWIOAuthBundle/blob/0.5.3/OAuth/ResourceOwner/GenericOAuth2ResourceOwner.php#L107) करता है, लेकिन यह उपयोग नहीं किया जाता है कि इसका उपयोग कैसे किया जाए यह। मैं प्रलेखन के अलावा एक अच्छा उदाहरण मांग रहा हूं। –

+1

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/1737 9 223) –

+0

चीयर्स डोनाल्ड ने इसे थोड़ा सा अपडेट किया। – delboy1978uk

1

OAuth2.0 की तिथि निकल चुकी पहुँच टोकन आप समाप्ति बिंदु को भेजने की जरूरत को ताज़ा करने के लिए:

  • अनुदान प्रकार
  • 'refresh_token' के बराबर एक वैध refreshToken
  • अपने clientid
  • और आपके क्लाइंट सेक्रेट

आप एक नया रेफरी प्राप्त करने के लिए एक कालबाह्य पहुंच नहीं भेज सकते पहुंचने के लिए टोकन।

public function refreshAccessToken($refreshToken, array $extraParameters = array()) 
{ 
    $parameters = array_merge(array(
     'refresh_token' => $refreshToken, 
     'grant_type' => 'refresh_token', 
     'client_id' => $this->options['client_id'], 
     'client_secret' => $this->options['client_secret'], 
    ), $extraParameters); 
    $response = $this->doGetTokenRequest($this->options['access_token_url'], $parameters); 
    $response = $this->getResponseContent($response); 
    $this->validateResponseContent($response); 
    return $response; 
} 

समारोह refreshAccessToken ($ refreshToken ...

और नहीं $ accessToken

मुझे लगता है कि आप के बाद फोन अपने पहचान के साथ अपने ग्राहक का निर्माण

$client = new Google_Client(); 
$client->setAuthConfig('client_secrets.json'); 
$client->refreshToken($client->getRefreshToken()); 

https://developers.google.com/api-client-library/php/auth/web-app#creatingcred

आप अपने $client->setClientId($this->user->getGoogleId()); के बारे में सुनिश्चित कर रहे हैं की जरूरत है? GoogleId() क्या मिलता है? https://developers.google.com/identity/sign-in/web/devconsole-project

OAuth client_id में उपयोगकर्ता आईडी लेकिन एप्लिकेशन आईडी

+0

बंडल में पहले से टोकन रीफ्रेश करने का एक तरीका है: [जेनेरिकऑथ 2 रिसोर्सऑनर :: रीफ्रेश टोकन()] (https://github.com/hwi/HWIOAuthBundle/blob/0.5.3/OAuth/ResourceOwner/GenericOAuth2ResourceOwner.php#L107), लेकिन वर्कफ़्लो में इसे लागू करने के तरीके के बारे में कोई दस्तावेज़ीकरण नहीं है [यहां] (https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/4-integrating_fosub.md) –

+0

हाँ लेकिन यह है स्पष्ट है कि आपको रीफ्रेश किया जाना चाहिए टोकन को पास करना होगा और विधि रीफ्रेश एक्सेसआउट के पहले पैरामीटर में एक्सेस नहीं किया जाना चाहिए। ओएथ 2.0 में एक्सेस टोकन रीफ्रेश करने के लिए आपको एक वैध रीफ्रेश टोकन भेजने की आवश्यकता है, एक अनुदान_टाइप 'refresh_token' और आपकी क्लाइंट आईडी और गुप्त –

+0

के बराबर होती है क्या आप मेरा उत्तर देख सकते हैं? मैं अपने सहयोगियों के साथ एक छोटी सी प्रतियोगिता कर रहा हूं मुझे कुछ बिंदु चाहिए। धन्यवाद ! –

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