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); }
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)); } } }