Estoy intentando utilizar la API de datos de YouTube de Google con PHP según la documentación de Google aquí: https://developers.google.com/youtube/2.0/developers_guide_protocol_oauth2#OAuth2_Refreshing_a_Token. Mi problema aparece cuando se autentica con OAuth. Estoy usando la siguiente URL de autorización, que es idéntica a la que dicen los documentos para usar, excepto para mi URL de redireccionamiento y la clave de la aplicación, obviamente.Token de actualización de API de Google YouTube no enviado
$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';
Entonces, como dicen los documentos que, Encrespo lo siguiente:
$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'
);
Sin embargo, mi respuesta nunca me da una refresh_token como su documentación dice que debería. Acabo de obtener los otros tres elementos de respuesta.
Algunas preguntas como esta: Get refresh token google api han dicho que use approval_prompt = force, pero eso tampoco funciona y es totalmente contrario al propósito de tener access_type = offline.
¿Alguna idea de por qué recibiría una respuesta válida con 3 de los 4 elementos de respuesta?
¡Gracias por la solución! – WHITECOLOR
¡Alguien acepta esto como la respuesta! –
Para el beneficio de que alguien más sufra mi propia confusión, una vez que obtenga un 'refresh token' no necesita _refresh_ también, ya que puede usar el mismo una y otra vez. La única vez que debería necesitar una nueva es si la pierde o el usuario revoca su acceso. – jeteon