Тодд из команды Fabric здесь.
Наиболее важным соображением здесь является то, что вы получаете данные Digits со своего сервера, а затем отправляете их непосредственно нам. Таким образом, ваш сервер получает информацию о доверенных пользователях.
Сначала запросите Digits, чтобы запросить идентификатор пользователя, номер телефона и токены OAuth. Для этого следует использовать OAuth Echo.
Для создания эхо-заголовков OAuth.
Класс DigitsOAuthSigning
предоставляет удобный способ создания заголовков авторизации для сеанса пользователя. DigitsOAuthSigning
зависит как от TwitterAuthConfig
, так и от TwitterAuthToken
.
Класс TwitterAuthConfig
инкапсулирует учетные данные для идентификации вашего приложения Twitter или Digits. Вы можете получить этот объект из класса Digits.
Класс TwitterAuthToken
представляет учетные данные пользователя Twitter of Digits. Вы можете получить этот объект у TwitterSession
или DigitsSession
.
TwitterAuthConfig authConfig = TwitterCore.getInstance().getAuthConfig();
TwitterAuthToken authToken = session.getAuthToken();
DigitsOAuthSigning oauthSigning = new DigitsOAuthSigning(authConfig, authToken);
Самый простой способ использовать OAuth Echo — создать заголовки авторизации в клиенте. Используйте эти заголовки, чтобы сделать эхо-запрос OAuth извне приложения (например, с сервера вашего веб-сервера).
Map<String, String> authHeaders = oauthSigning.getOAuthEchoHeadersForVerifyCredentials();
Карта authHeaders
содержит ключи X-Auth-Service-Provider
и X-Verify-Credentials-Authorization
. Ваш веб-сервер должен принять значение в X-Verify-Credentials-Authorization
и использовать его для установки заголовка Authorization
для запроса к URL-адресу в X-Auth-Service-Provider
. Получив заголовки, вы можете отправить их на свой веб-сервер для проверки учетных данных.
URL url = new URL("http://api.yourbackend.com/verify_credentials.json");
HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.setRequestMethod("GET");
// Add OAuth Echo headers to request
for (Map.Entry<String, String> entry : authHeaders.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
// Perform request
connection.openConnection();
Для дополнительной безопасности на вашем веб-хостинге вы должны:
Убедитесь, что значение заголовка oauth_consumer_key
в X-Verify-Credentials-Authorization
соответствует вашему потребительскому ключу oauth, чтобы убедиться, что пользователь входит на ваш сайт. Вы можете использовать библиотеку oauth для анализа заголовка и явного соответствия значению ключа, например. parse(params['X-Verify-Credentials-Authorization']).oauth_consumer_key=<your oauth consumer key>.
Проверьте заголовок X-Auth-Service-Provider
, проанализировав uri и подтвердив домен api.digits.com, чтобы убедиться, что вы звоните в Digits.
Проверьте ответ на вызов verify_credentials, чтобы убедиться, что пользователь успешно вошел в систему.
Рассмотрите возможность добавления дополнительных параметров в подпись, чтобы связать собственный сеанс вашего приложения с сеансом Digits. Используйте альтернативную форму getOAuthEchoHeadersForVerifyCredentials(Map<String, String> optParams)
, чтобы указать дополнительные параметры для включения в URL-адрес службы OAuth. Убедитесь, что эти параметры присутствуют в URL-адресе службы и что запрос API выполнен успешно.
Справочник по проверке пользователей Digits в Android
person
Todd Burner
schedule
13.03.2017