Próbuję użyć interfejsu API Google YouTube Data z PHP na podstawie dokumentacji Google tutaj: https://developers.google.com/youtube/2.0/developers_guide_protocol_oauth2#OAuth2_Refreshing_a_Token. Mój problem pojawia się podczas uwierzytelniania za pomocą protokołu OAuth. Używam oczywiście następującego autoryzowanego adresu URL, który jest identyczny z tym, który mówią doktorzy, z wyjątkiem mojego przekierowania uri i klucza aplikacji.Google API API Odświeżanie tokena nie jest wysyłane
$this->authorizationUrl = 'https://accounts.google.com/o/oauth2/auth?';
$this->authorizationUrl .= 'client_id=' . $this->applicationKey . '&';
$this->authorizationUrl .= 'redirect_uri=' . $this->redirect_uri . '/account.php?action=youtube_oauth&';
$this->authorizationUrl .= 'scope=https://gdata.youtube.com&';
$this->authorizationUrl .= 'response_type=code&';
$this->authorizationUrl .= 'access_type=offline';
Potem, jak docs powiedzieć, ja Curl następujące:
$curl_options = Array(
CURLOPT_POSTFIELDS => Array(
'code' => $code,
'client_id' => $this->applicationKey,
'client_secret' => $this->applicationSecret,
'redirect_uri' => $this->redirect_uri . '/account.php?action=youtube_oauth',
'grant_type' => 'authorization_code'
),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => 'https://accounts.google.com/o/oauth2/token'
);
Jednak nie moja odpowiedź daje mi refresh_token jak ich dokumentacja mówi, że powinno. Właśnie dostaję pozostałe trzy elementy odpowiedzi.
Niektóre pytania, takie jak ten: Get refresh token google api powiedziałem, że używają approval_prompt = force, ale to też nie działa i całkowicie niszczy cel posiadania access_type = offline.
Jakieś pomysły, dlaczego dostanę poprawną odpowiedź z 3 z 4 elementów odpowiedzi?
Dzięki za rozwiązanie! – WHITECOLOR
Ktoś akceptuje to jako odpowiedź! –
Z korzyścią dla każdego, kto cierpi na moje własne zamieszanie, po uzyskaniu 'odświeżającego tokena 'nie musisz _refresh_ it too, ponieważ możesz używać tego samego w kółko. Jedyny przypadek, w którym powinieneś potrzebować nowego, to utrata lub anulowanie dostępu przez użytkownika. – jeteon