元のリクエスト構造を崩さずに、完全なURLをエンコードし、コールバックリンクをデコードし、クエリパラメータ値をエスケープします。
redirect_uri またはコールバック値をエンコードしますか?コンポーネントレベルのルールのガイドを使用してから、ここに戻って正確な値をエンコードまたはデコードします。
URLエンコード(percent-encoding)は、スペース、Unicode、予約文字を転送に安全な形式へ変換します。ブラウザURL、redirect_uri、APIクエリ値、またはコピーしたコールバックリンクの意味を変えずに通したいときに使います。
:, /, ?, &, = のような区切りを完全なリンク内で読みやすく保ちたいなら完全URLのエンコードを使ってください。単一の値をクエリパラメータ、リダイレクト先、またはネストされたコールバックURLの中に収める必要がある場合はコンポーネントエンコードを使います。
redirect_uri=https://app.example.com/callback?next=/settings
redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Fnext%3D%2Fsettings
https://app.example.com/callback?next=%2Fsettings%3Ftab%3Dprofile
https://app.example.com/callback?next=/settings?tab=profile
email=dev+alerts@example.com
email=dev%2Balerts%40example.com
リンク全体を読みやすく保ち、?, &, = のような区切りをそのまま残したいなら完全なURLをエンコードしてください。redirect_uri、state、検索語のようにデータが1つの key=value ペアに収まる必要がある場合は、パラメータ値だけをエンコードします。
encodeURI は完全なリンクに対して :, /, ?, # のような構造用URL文字を保持します。encodeURIComponent はそれらの予約文字もエスケープするため、クエリパラメータ値、ネストされたURL、コピーしたコールバック先にはより安全です。