TokenIssuer.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Android.App;
  6. using Android.Content;
  7. using Android.OS;
  8. using Android.Runtime;
  9. using Android.Views;
  10. using Android.Widget;
  11. using Google.Apis.Auth.OAuth2.Responses;
  12. using Xamarin.Auth;
  13. using Xamarin.Forms;
  14. using XamarinFormsGoogleDriveAPI.Droid.DependencyService;
  15. using XamarinFormsGoogleDriveAPI.Services.Service.Interface;
  16. [assembly: Dependency(typeof(TokenIssuer))]
  17. namespace XamarinFormsGoogleDriveAPI.Droid.DependencyService
  18. {
  19. public class TokenIssuer : ITokenIssuer<TokenResponse>
  20. {
  21. private Account userAccount;
  22. public Account UserAccount
  23. {
  24. get
  25. {
  26. if (userAccount == null)
  27. {
  28. userAccount = AccountStore.Create(Forms.Context).FindAccountsForService("Google").FirstOrDefault();
  29. }
  30. return userAccount;
  31. }
  32. }
  33. public TokenIssuer()
  34. {
  35. }
  36. public TokenResponse GetToken()
  37. {
  38. TokenResponse token = null;
  39. try
  40. {
  41. token = new TokenResponse()
  42. {
  43. AccessToken = UserAccount.Properties["access_token"],
  44. ExpiresInSeconds = Convert.ToInt64(UserAccount.Properties["expires_in"]),
  45. IdToken = UserAccount.Properties["id_token"],
  46. //IssuedUtc = Convert.ToDateTime(UserAccount.Properties["issued_utc"]),
  47. RefreshToken = UserAccount.Properties["refresh_token"],
  48. Scope = UserAccount.Properties["scopes"],
  49. TokenType = UserAccount.Properties["token_type"],
  50. };
  51. }
  52. catch (Exception e)
  53. {
  54. Console.WriteLine(e);
  55. throw;
  56. }
  57. return token;
  58. }
  59. }
  60. }