Как получить идентификатор пользователя Google (не идентификатор устройства) наверняка?
Существует несколько способов идентификации устройства - IMEI/IMSI/ESN, GoogleID, ваш собственный зашифрованный GUID, сохраненный в частном магазине и т. Д. Но если люди переключают свои устройства каждые 3-6 месяцев, важно идентифицировать не устройство, а именно пользователь.
Мы знаем, что Google использует уникальный идентификатор для идентификации пользователя (адрес электронной почты), который позволяет совершать покупки в Google Play и так далее. Также мы знаем, что Google запретил разработчикам получать доступ к этому идентификатору, сохранять его и использовать для спама, например. Собственно, теперь мы можем получить его с помощью диспетчера аккаунтов, хотя бы одного из них. По крайней мере, я не знаю, как отличить, какая учетная запись активна и используется для покупки моего приложения.
В Widows Phone я вижу мудрый подход: система дает разработчику некоторый хэш от идентификатора учетной записи пользователя / электронной почты. Таким образом, вы ничего не можете с этим поделать, кроме как просто идентифицировать своего пользователя. Именно то, что я хочу сделать! Даже если кто-то украдет это удостоверение личности, он не сможет использовать его в качестве электронной почты или чего-то еще.
Поэтому я ищу что-то похожее. Тем не менее я не нашел однозначной информации о том, как безопасно идентифицировать пользователя. Есть много постов, много мнений, но все еще нет ясного и понятного способа.
В схеме безопасности IAP до сих пор я думаю о получении всех учетных записей Google на устройстве и помню двойной md5 из них на моем или сервере Google для конкретной покупки / order_no. Позже, когда какой-либо экземпляр моего приложения запросит эту покупку, отправив double-md5 своего владельца google-id, сервер сравнит, если хотя бы одна из учетных записей, которую он запомнил для этой конкретной покупки / order_no, будет равна этому идентификатору, а затем ответьте соответственно.
Но, может быть, есть более понятная схема?
1 ответ
Разработчики Android, которые внедрили API биллинга в приложении, должны были добавить простую функцию, которая возвращала бы хэш электронной почты аккаунта Google, который в настоящее время используется для покупок в приложении. Хеш делает практически невозможным использование его для чего-либо другого, кроме определения уникального идентификатора покупки. Кроме того, массив хэшей текущего списка учетных записей электронной почты Google.
Да, есть способ обойти это путем получения списка учетных записей с помощью AccountManager, но для этого требуются дополнительные разрешения и получение адресов электронной почты пользователя, что для целей покупок в приложении кажется излишним и фактически нежелательным, если все хотят сделать, это проверить уникальную идентификацию покупателя пользователя.
Массив хэшей текущего списка учетных записей электронной почты Google можно использовать для проверки того, использовалась ли какая-либо из текущих учетных записей электронной почты Google, которая в настоящее время находится на устройстве, при первоначальной покупке платежного элемента в приложении.