Ответ на запрос в файле android-sdk-windows \ extras \ google \ market_licensing \ library \ src \ com \ google \ android \ vending \ licensing \ ResponseData.java в методе parse().
Строка signedData представляет собой последовательность из 6 полей, разделенных символами |, необязательно сопровождаемых двоеточием, и & -сепаратированное имя = значение коллекции (например, строка запроса). Например:
0|17|com.acme.myapp|1|AAAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHH==|1480563297411:GR=10&VT=1480570457760>=1481088857760
Это одно из платного приложения.
6 полей в первой секции:
- код ответа (INT) - предположительно такой же, как первый параметра
verifyLicense
«s
- Нонс (INT) - поставляется прямо из
checkLicense
вызова
- имя пакета
- код версии
- ID пользователя, с комментарием «конкретного приложения идентификатор пользователя»
- Временная метка (длинная) - не уверена в чем. Определенно не покупка; repeat run возвращает другое, более позднее значение. Вероятно, это проверка лицензии.
UserID, по-видимому, является кодировкой Base64. Какой пользователь это идентифицирует и как? Владелец лицензии, полагает один из владельцев лицензии; но как? Декодирование дает байтовый массив длиной 25 байтов.
Для загруженного приложения основные поля - это все, что есть. Для магазина, купленного приложения, есть дополнительные данные. Значение дополнительных полей данных можно найти here. В частности, с недавно купленным приложением, следующие дополнительные поля приходят:
- GR - максимальное количество повторов
- VT - лицензионную метку время действия; определяет, когда лицензия должна быть перепроверены
- GT - льготный период, TIMESTAMP
Что касается UserID, я сделал некоторые тесты. У меня есть три случая:
- Пакет, сторона загруженным
- Пакет, скачал за плату от Play
- Пакет B, скачать бесплатно с Play (одним и тем же пользователем)
Во всех трех случаях первые 5 байтов декодированного UserID совпадают, остальные - нет. Поэтому ни уникальная часть пакета, ни уникальная часть пользователя не могут быть легко идентифицированы в UserID.Примечательно, что остаток составляет 20 байтов - может быть хеш MD5. UserID определенно не является строкой в любой разумной кодировке, и она не похожа на структуру с двоичными целыми числами. По-видимому, случайный битовый шаблон указывает либо на хэш, либо на cyphertext. Последнее маловероятно.
Благодарим вас за обмен и отзыв о [службе лицензий Google Play: утверждения о поле userId?] (Http://stackoverflow.com/q/14578627/1856738). Тем не менее, никакое утверждение от Google о длине - не облегчает профессиональную работу с Android. –