Нарушение URL-адреса запроса аутентификации Google (аутентификация на стороне клиента)

#javascript #client-side #google-authentication

#javascript #на стороне клиента #google-аутентификация

Вопрос:

У меня есть небольшой фрагмент кода javascript, который всегда работал в приложении angular:

   async googleSignIn(redirectUrl, userId) {
    let clientID=encodeURIComponent('redacted');
    let redirectURI=encodeURIComponent(redirectUrl);
    let scope=encodeURIComponent('https://www.googleapis.com/auth/calendar') " " encodeURIComponent('https://www.googleapis.com/auth/calendar.events')
    let url  = 
     `https://accounts.google.com/o/oauth2/v2/auth?response_type=codeamp;
     client_id=${clientID}amp;
     redirect_uri=${redirectURI}amp;
     access_type=offlineamp;
     prompt=consentamp;
     scope=${scope}amp;
     state=${userId}`;
    window.open(url,"_self");
}
 

Ничего не изменилось, но теперь это больше не работает, вместо этого я получаю ошибку 400 с отсутствующим параметром. Какой из них отсутствует, меняется каждый раз, когда я загружаю ссылку (ClientID, scope, redirectUri — он всегда говорит, что ОДИН из них отсутствует, даже если они присутствуют).

Я проверил, что все есть, используя отладчик и проверив переменную. Я даже скопировал содержимое переменной, вставил его в новую вкладку, и ЭТО СРАБОТАЛО. Я действительно в тупике, пожалуйста, кто-нибудь может помочь мне понять, что я здесь делаю не так?

введите описание изображения здесь

Ответ №1:

Литералы шаблона будут отображать строку по мере их написания, включая newline , spaces , … проблема в этих новых строках. удаление лишних символов решит проблему:

 let url  = `https://accounts.google.com/o/oauth2/v2/auth?response_type=codeamp;client_id=${clientID}amp;redirect_uri=${redirectURI}amp;access_type=offlineamp;prompt=consentamp;scope=${scope}amp;state=${userId}`;