Ответ от odnoklassniki Api Team
Т.к. используется серверный OAuth (response_type=code), то он имеет 2 фазы:
1. Открывается превью с правами
2. После получения code, идет запрос от вашего сервера к нашему за токенами доступа.
На этих двух шагах redirect_uri должен полностью совпадать.
Скорее всего, т.к. при запросе GET_EMAIL, вы его выдаете, то у вас добавляется на втором шаге еще параметр permissions_granted=GET_EMAIL, а так быть не должно.
Это просто смешно, из-за того что в ссылку добавляется GET параметр невозможно зарегистрироваться через соц сеть, сама ссылка же не меняется, все остальные сервисы соцсетей работают отлично в них достаточно просто указать домен сайта( в odnoklassniki же нужно указывать каждую страницу с которой идет запрос вплоть до get параметров) .
По логике odnoklassniki Api Team я должен лезть в исходники библиотеки которой пользуюсь и убирать параметр permissions_granted=GET_EMAIL только для сервиса odnoklassniki, с риском того что упадут все остальные сервисы соцсетей, которые кстати работают отлично и без всяких проблем.
Вывод: Либо пишите вручную логику OAuth авторзации для этого "прекрасного" сервиса, либо, что будет явно лучше, откажитесь от использования данного сервиса.