Android и Twitter Fabric: отправка определенного номера телефона для проверки в Twitter-Fabric Digits API

Я уже добавил код для проверки номера телефона в свое приложение, как только пользователь подтвердит свой номер телефона, я добавлю этот номер в свою базу данных.

Теперь, если пользователь снова входит в систему, я прошу пользователя снова подтвердить свой номер телефона, но твиттер позволяет ему / ей проверять любой номер, но я хочу, чтобы цифры твиттера проверяли номер телефона, который я предоставляю цифрам твиттера из моей базы данных.


person dhrumit patel    schedule 12.03.2017    source источник


Ответы (1)


Тодд из команды 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