Не удалось обновить с ошибкой 403 Forbidden.Токен обновления был отозван или истек - PullRequest
0 голосов
/ 03 октября 2018

Я использую Microsoft.WindowsAzure.MobileServices.MobileServiceClient для аутентификации пользователей с помощью их учетных записей Google и Xamarin.Auth.AccountStore для хранения токенов.Когда приложение запускается в первый раз, AccountStore пуст.Пользователь регистрируется с помощью метода MobileServiceClient.LoginAsync.

    client.LoginAsync(_mainActivity, 
 MobileServiceAuthenticationProvider.Google, "myjobdiary", new Dictionary<string, string>
            {
                { "access_type", "offline" }
            });

Все работает нормально, пользователь авторизован и токен сохранен с использованием метода ..

        public void StoreTokenInSecureStore(MobileServiceUser user)
    {
        var account = new Account(user.UserId);
        account.Properties.Add("token", user.MobileServiceAuthenticationToken);
        _accountStore.Save(account, "myjobdiary");
    }

Теперь я перезагружаю свое приложение и получаю пользователя изхранилище учетных записей, используя метод ..

        public MobileServiceUser RetrieveTokenFromSecureStore()
    {
        var accounts = _accountStore.FindAccountsForService("myjobdiary");
        if (accounts != null)
        {
            foreach (var acct in accounts)
            {
                if (acct.Properties.TryGetValue("token", out string token))
                {
                    return new MobileServiceUser(acct.Username)
                    {
                        MobileServiceAuthenticationToken = token
                    };
                }
            }
        }
        return null;
    }

Полученный пользователь настроен на использование MobileServiceClient.Теперь я хочу обновить токен с помощью метода MobileServiceClient.RefreshUserAsync.Исключение 'Не удалось обновить с ошибкой 403 Forbidden.Токен обновления был отозван или срок его действия истек.произошло. мобильных приложений с лазурью, токены обновления

1 Ответ

0 голосов
/ 04 октября 2018
return await client.LoginAsync(
            _mainActivity, MobileServiceAuthenticationProvider.Google, "myjobdiary", new Dictionary<string, string>
            {
                { "access_type", "offline" },
                { "prompt", "consent" }
            });
...