У меня нет точного ответа для вас, но я работал над чем-то похожим на Instagram, и одна вещь, которая меня несколько озадачила, заключалась в том, что мой URL перенаправления выглядел так же, как ожидал Instagram, но я продолжал получать ошибки.
Как и вы, когда я «вручную кодировал» URL-адрес перенаправления, я получил ожидаемый результат, но мои автоматические вызовы по URL-адресу аутентификации не были выполнены. Оказалось, что мои амперсанды были закодированы в URL, который Instagram сравнивал с URL-адресом перенаправления, и увидел, что они не идентичны. Я не уверен, что это поможет вам ближе к ответу, но я подумал, что поделюсь своим опытом, поскольку ваш вопрос напоминает мне ситуацию, в которой я находился. Удачи.