URL с параметрами URL объединяется в браузерах - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть следующий код:

const url = 'https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=' +
                    encodeURIComponent('https://dev.mysite.com/google_oauth2/') + 
                    '&scope=https://www.googleapis.com/auth/drive.file&client_id=myclientid'

window.open(url, "", "width=700,height=500")

И очень странное поведение заключается в том, что если я очищаю историю браузера и запускаю этот код в первый раз, он работает нормально, НО ТО, если я запускаюдля второго и последующих раз URL-адреса объединяются, и я вижу

https://dev.mysite.com/google_oauth2/?code=mycode&scope=https://www.googleapis.com/auth/drive.file

вместо

https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=https://dev.mysite.com%2Fgoogle_oauth2%&scope=https://www.googleapis.com/auth/drive.file&client_id=myclientid

Кто-нибудь знает, почему это происходит?

Кстати, я использую React.JS, но не думаю, что это как-то связано с этим ...

Решено.Была ли проблема, связанная с Google,

1 Ответ

2 голосов
/ 28 сентября 2019

Я бы предложил вам использовать более подходящие URL и URLSearchParams для таких целей: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams и https://developer.mozilla.org/en-US/docs/Web/API/URL

Таким образом, ваш код будет:

const url = new URL('https://accounts.google.com/o/oauth2/v2/auth')
url.searchParams.append('redirect_uri', 'https://dev.mysite.com/google_oauth2/');
url.searchParams.append('scope', 'https://www.googleapis.com/auth/drive.file');
url.searchParams.append('client_id', 'myclientid');

Иurl.href будет:

https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=https%3A%2F%2Fdev.mysite.com%2Fgoogle_oauth2%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.file&client_id=myclientid

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...