Я пытаюсь написать приложение, которое будет взаимодействовать с Last.fm API, и я застрял.
Моя проблема связана с авторизацией. Цитата с сайта Last.fm API:
Ваше приложение должно открыть экземпляр веб-браузера и отправить
пользователь last.fm/api/auth с вашим ключом API и аутентификацией
токен в качестве параметров. Используйте запрос HTTP GET.
Я знаю, как отправить запрос GET и как открыть браузер с указанным URL. Но как я могу реализовать эту функцию и ловить событие моего приложения, когда пользователь одобряет или не одобряет авторизацию в браузере? Возможно, я должен использовать HTTP GET в течение 15 секунд, и если я не получаю имя пользователя, я должен попросить пользователя выполнить авторизацию снова. Это правильный путь?
Это несколько подло. Из-за инструкций это кажется простым, но на самом деле это сложная проблема, и даже не похоже, что Last.fm принадлежит библиотека liblastfm C ++ Для взаимодействия с сервисом предусмотрено решение.
Некоторые подходы в порядке возрастания сложности включают в себя:
Откройте веб-браузер по умолчанию для URL-адреса и отобразите кнопку, которую пользователь может щелкнуть после того, как он или она авторизует приложение.
Плюсы: просто
Минусы: плохой пользовательский опыт. Вам нужно будет убедиться, что у пользователя есть четкие инструкции, чтобы он не запутался. Кроме того, пользователь может подумать, что ваше приложение сломано, потому что «они уже авторизовали ваше приложение!», Не понимая, что ваше приложение не узнает об этом, пока он или она не нажмет кнопку.
Откройте веб-браузер по умолчанию для URL, отобразите неопределенное сообщение «Ожидание авторизации от Last.fm» и опросите auth.getSession вызов метода API каждые 15 секунд или около того, чтобы увидеть, авторизовал ли пользователь ваше приложение. Возможно, также предоставьте кнопку «Проверить сейчас».
Плюсы: просто и не так плохо для пользователя.
Минусы: API не предоставляет код ошибки, сигнализирующий о том, что пользователь отказал в авторизации. Вы можете не знать, авторизовал ли пользователь когда-либо ваше приложение, и вы могли бы вечно ждать авторизации. Кроме того, я не знаю, есть ли ограничения на вызовы auth.getSession, но вы можете столкнуться с проблемами ограничения скорости.
Вставьте веб-браузер в ваше приложение. Вы будете иметь полный контроль над ним, и настройка обработчиков событий должна быть простой.
Плюсы: нет необходимости опроса, так как приложение получает уведомления, когда пользователь отправляет форму.
Минусы: пользовательский интерфейс может сбивать с толку некоторых пользователей.
Зарегистрируйте пользовательскую схему URI в операционной системе и используйте Last.fm инструкции по авторизации веб-приложений.
Идея состоит в том, чтобы зарегистрировать схему URI (также называемую протоколом приложения; например, myApp://
) и укажите URL обратного вызова, используя пользовательскую схему (например, myApp://lastFmAuthorizationCallback
).
Увидеть:
(Зависит от платформы) Автоматизируйте веб-браузер. Точные способы сделать это зависят от веб-браузера и платформы.
Плюсы: могут быть бесшовными. Должны обеспечить превосходный пользовательский опыт, когда все сделано правильно.
Минусы: сложно разработать и автоматизация может сломаться с обновлением браузера.
Это частично зависит от того, какой API вы используете для запуска процесса браузера. Если вы используете API, который вы можете определить при выходе из запущенного процесса, используйте этот механизм. При вызове / auth HTTP GET вы не получаете никакого имени пользователя. По мнению остальных документация по аутентификации для настольных приложений, браузер автоматически закроется, когда пользователь подтвердит:
Как только пользователь предоставил вашему приложению разрешение на использование своих
учетной записи, процесс на основе браузера завершен, и пользователю предлагается
закройте браузер и вернитесь в свое приложение
После этого вам предстоит пройти еще несколько шагов. Вам нужно в следующий раз позвонить auth.getSession чтобы получить сеанс. Если пользователь еще не одобрил ваше приложение, этот вызов не будет выполнен (и вы можете показать пользователю, что ему нужно одобрить ваше приложение и снова дать ему ссылку). Вот перечисленные типы возможных ошибок:
ошибки
4: указан неверный токен аутентификации
14: этот токен не был авторизован
15: срок действия этого токена истек
4: Ошибка аутентификации — у вас нет прав доступа к сервису
9: Неверный ключ сеанса — повторите аутентификацию. 10: Неверный ключ API. Вам должен быть предоставлен
И т.п.
После того, как вы утвердили сеанс, вы можете начать делать соответствующие звонки