URL обратного вызова не одобрен Twitter
Мое приложение, созданное на основе spring-social-twitter, которое позволяет пользователям входить через Twitter, недавно перестало работать.
У меня есть сообщение об ошибке, как показано ниже:
URL обратного вызова не одобрен для этого клиентского приложения. Утвержденные URL-адреса обратного вызова можно настроить в настройках приложения.
Примечание: я использую Spring Social Twitter версии 1.1.2.RELEASE. И если вы используете Spring Social Twitter версии 1.1.0.RELEASE, вы можете получить немного другое сообщение об ошибке, как показано ниже:
Запрос POST для " https://api.twitter.com/oauth/request_token" привел к 403 (Запрещено); вызов обработчика ошибок
3 ответа
Twitter (недавно, в мае 2018 года) ввел в действие требование о том, что пользователи, выполняющие вход с Twitter, должны включать URL-адреса обратных вызовов из белого списка по соображениям безопасности (см. Объявление).
Это означает, что URL-адреса обратного вызова должны быть явно и одинаково настроены для всех поддерживаемых сторонних приложений. Вы можете настроить обратные вызовы на странице настройки приложения в Твиттере: https://apps.twitter.com/
Например, если ваш URL обратного вызова http://localhost:8080/myApp/signin/twitter
Вы должны добавить его в список URL-адресов обратного вызова на странице настройки приложения в Твиттере в том виде, в каком он есть: http://localhost:8080/myApp/signin/twitter
См. Также документацию по URL-адресам обратных вызовов Twitter.
Я боролся с этим, так как Twitter внес изменения для повышения безопасности. Мое приложение для Android будет использовать URL-адрес обратного вызова и тот же URL-адрес в фильтре намерений. Но после изменения URL-адрес, который я использовал, должен был быть зарегистрирован на портале для разработчиков Twitter. Я использовал ouath://myapp, но Twitter не принимает это как действительный URL (веб-сайт).
Немного покопавшись, я обнаружил, что для приложений вы можете указать любую схему, но только как схему. Например, я использовал myapp:// в качестве URL обратного вызова.
В моем приложении URL обратного вызова был myapp:// что угодно, а в фильтре Intent я использовал:
<data android:scheme="myapp" android:host="whatever">
Twitter принял URL-адрес обратного вызова, и он правильно перенаправился обратно в мое приложение после того, как пользователь прошел аутентификацию с помощью своих учетных данных Twitter.
Первоначально я использовал только обычный веб-сайт, и это тоже сработало, но после проверки в Twitter он спросил, хочу ли я перенаправить на свое приложение или в браузер Chrome. Используя вышеуказанный подход, он просто вернется в ваше приложение.
Сделав все это, я понял, что мог бы просто добавить Oauth:// в качестве URL-адреса обратного вызова, и мое приложение работало бы без изменений.
Я исправил это, добавив эти URL-адреса обратного вызова в белый список Twitter.
twitterkit-{Twitter API Key}://
для iOS.