Токен обновления API Google YouTube не отправляется

Я пытаюсь использовать API данных Google YouTube с PHP на основе документации Google здесь: https://developers.google.com/youtube/2.0/developers_guide_protocol_oauth2#OAuth2_Refreshing_a_Token. Моя проблема возникает при аутентификации с помощью OAuth. Я использую следующий URL-адрес авторизации, который идентичен тому, который, как говорят документы, используется, за исключением моего перенаправления uri и ключа приложения, очевидно.

$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';

Затем, как говорится в документах, я cURL-адресую следующее:

$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'
        );

Однако мой ответ никогда не дает мне refresh_token, как указано в их документации. Я просто получаю остальные три элемента ответа.

Вот некоторые вопросы, подобные этому: Получить токен обновления Google APIсказали использовать Approval_prompt=force, но это тоже не работает и полностью противоречит цели иметь access_type=offline.

Есть идеи, почему я получу правильный ответ с 3 из 4 пунктов ответа?

7
задан Community 23 May 2017 в 12:34
поделиться