private IDictionary <string, string> GetPayload() { var jwtPayload = _jwtPayload.GetPayload(); var rsaParams = Credentials.GetRSAParams(); string jwtToken; using (var rsa = new RSACryptoServiceProvider()) { rsa.ImportParameters(rsaParams); jwtToken = Configuration.JwtTokenProvider.Encode(jwtPayload, rsa); } var permissionPayload = new PermissionAuthPayloadGenerator(jwtToken).GetPayload(); return(permissionPayload); }
public async Task <FirebaseAccessToken> Send2LOTokenRequestAsync() { var jwtPayload = _jwtPayload.GetPayload(); var rsaParams = _serviceAccountCredentials.GetRSAParams(); string jwtToken; using (var rsa = new RSACryptoServiceProvider()) { rsa.ImportParameters(rsaParams); jwtToken = _firebaseConfig.JwtTokenProvider.Encode(jwtPayload, rsa); } var permissionPayload = new PermissionAuthPayloadGenerator(jwtToken).GetPayload(); var urlEncodedPayload = new FormUrlEncodedContent(permissionPayload); HttpResponseMessage response = await PostAsync(_firebaseConfig.GoogleOAuthTokenPath, urlEncodedPayload); await response.EnsureSuccessStatusCodeAsync(); if (response.Content == null) { throw new FirebaseHttpException("Authentication failed, empty response content from firebase server"); } var strinRepresentation = await response.Content.ReadAsStringAsync(); var serializationSettings = new JsonSerializerSettings() { ContractResolver = new FirebaseAccessTokenContractResolver() }; _accessToken = JsonConvert.DeserializeObject <FirebaseAccessToken>(strinRepresentation, serializationSettings); if (_accessToken == null) { throw new FirebaseHttpException("Authentication failed, unsupported content type was returned from firebase server"); } return(_accessToken); }