Google Oauth 2 возвращает 200 с пустым json, где ожидаются токены - PullRequest
0 голосов
/ 17 апреля 2020

Наличие приложения vue2 с проектом, настроенным на консоли Google для использования oauth2. На стороне клиента я легко получаю код авторизации (используя этот https://github.com/guruahn/vue-google-oauth2)

const gauthOption = {
  clientId: 'XXXXXX.apps.googleusercontent.com',
  scope: 'https://www.googleapis.com/auth/youtube.upload',
  prompt: 'select_account',
  access_type : 'offline',
}

Vue.use(GAuth, gauthOption)

Теперь я передаю код авторизации контроллеру laravel, чтобы получить конец токена refre sh.

public function ytTokens(Request $request){

  $endpoint = "https://oauth2.googleapis.com/token";
  $client = new \GuzzleHttp\Client();
  $redirect_uri = 'postmessage';
  $grant_type = 'authorization_code';
  $code = $request->code;

  try {

    $response = $client->request('POST', $endpoint, [
      'form_params'=> [
          'redirect_uri' => $redirect_uri,
          'grant_type' => $grant_type,
          'code' => $code,
          'client_id' => 'XXXXXX.apps.googleusercontent.com',
          'client_secret' => 'YYYYYYY'
      ]
    ]);
  } catch(Exception $e) {
    return $e;
  }
  return response()->json($response);

}

При использовании одинаковых идентификаторов Google на клиенте и сервере

пробовал redirect_uri с реальным URL сервера, зарегистрированным в консоли, он всегда возвращает несоответствие uri, даже после создание новых идентификаторов консоли gg, ожидание ...

Таким образом, вызов API, выполненный с redirect_uri со строкой 'postmessage' в нем, как указано в документации, не возвращает ошибку, но пустой объект json: {}

...