2016-11-30 12 views
3

Google Play на Android имеет сервис для проверки лицензии, com.android.vending.licensing.ILicensingService. Он поддерживает интерфейс обратного вызова, ILicenseResultListener. Он имеет метод verifyLicense с тремя параметрами. Для платного приложения, загруженного из Google Play, что входит во второй, signedData, пожалуйста?Что находится в параметре signedData объекта ILicenseResultListener.verifyLicense?

И this вот почему мне интересно.

ответ

0

Ответ на запрос в файле 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&GT=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. Последнее маловероятно.

+0

Благодарим вас за обмен и отзыв о [службе лицензий Google Play: утверждения о поле userId?] (Http://stackoverflow.com/q/14578627/1856738). Тем не менее, никакое утверждение от Google о длине - не облегчает профессиональную работу с Android. –

Смежные вопросы