Exemple #1
0
        public async Task <AndroidCheckinResponse> CheckIn()
        {
            var androidRequest = new AndroidCheckinRequest
            {
                Checkin = new AndroidCheckinProto
                {
                    CellOperator = "310260",
                    Roaming      = "mobile:LTE:",
                    SimOperator  = "310260",
                    Type         = DeviceType.DeviceAndroidOs
                },
                Digest    = "1-929a0dca0eee55513280171a8585da7dcd3700f8",
                Locale    = "en_US",
                LoggingId = -8212629671123625360,
                Meid      = "358240051111110",
                OtaCerts  =
                {
                    "71Q6Rn2DDZl1zPDVaaeEHItd+Yg="
                },
                TimeZone = "America/New_York",
                Version  = 3
            };

            var requestStream = new MemoryStream();

            Serializer.Serialize(requestStream, androidRequest);

            var content = new ByteArrayContent(requestStream.ToArray());

            content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-protobuffer");

            var response = await _httpClient.PostAsync("https://android.clients.google.com/checkin", content).ConfigureAwait(false);

            response.EnsureSuccessStatusCode();

            var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);

            var androidCheckinResponse = Serializer.Deserialize <AndroidCheckinResponse>(responseStream);

            return(androidCheckinResponse);
        }
Exemple #2
0
        private async Task <CheckinData> CheckIn(ulong androidId, ulong securityToken)
        {
            AndroidCheckinRequest request = new AndroidCheckinRequest()
            {
                UserSerialNumber = 0,
                Checkin          = new AndroidCheckinProto()
                {
                    Type        = DeviceType.DeviceChromeBrowser,
                    ChromeBuild = new ChromeBuildProto()
                    {
                        Platform      = ChromeBuildProto.Types.Platform.Mac,
                        ChromeVersion = "63.0.3234.0",
                        Channel       = ChromeBuildProto.Types.Channel.Stable
                    },
                },
                Version       = 3,
                Id            = Convert.ToInt64(androidId),
                SecurityToken = securityToken
            };

            using (var httpClient = new HttpClient())
                using (var memoryStream = new MemoryStream())
                {
                    httpClient.DefaultRequestHeaders.Clear();
                    httpClient.DefaultRequestHeaders.ConnectionClose = true;

                    request.WriteTo(memoryStream);
                    memoryStream.Position = 0;

                    StreamContent content = new StreamContent(memoryStream);
                    content.Headers.ContentType = protobufContentType;

                    HttpResponseMessage response = await httpClient.PostAsync(checkinUrl, content).ConfigureAwait(false);

                    using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
                    {
                        AndroidCheckinResponse result = AndroidCheckinResponse.Parser.ParseFrom(responseStream);
                        return(new CheckinData(result.AndroidId, result.SecurityToken));
                    }
                }
        }