Получение токена доступа из токена обновления с помощью API Google

Я использую google + api для .NET в своем приложении. Используя пример, приведенный в this Я могу получить токен доступа.

Моя проблема заключается в том, как получить токен доступа из токена обновления с помощью OAuth 2.0. Я не нашел примеров для получения токена доступа из токена обновления.

Я упомянул ссылку [google + API], но они упомянули ее с помощью методов HTTP. 2 Пожалуйста, предоставьте мне несколько примеров в С# используя методы, предоставляемые API google +.

+3
источник поделиться
1 ответ

В первый раз вам нужно получить токен доступа из приглашения браузера, а затем сохранить его в каком-то магазине.

Проверьте, истек ли токен, а затем попробуйте обновить его.

Код здесь:

private static IAuthorizationState GetAuthentication(NativeApplicationClient arg)
    {
        try
        {

            // Get the auth URL:
            var config = new Configuration();
            var calendarScope = Google.Apis.Util.Utilities.ConvertToString(CalendarService.Scopes.Calendar);
            IAuthorizationState state = new AuthorizationState(new[] { calendarScope });
            state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
            Uri authUri = arg.RequestUserAuthorization(state);
            var authCode = String.Empty;

            if (String.IsNullOrWhiteSpace(config.AccessToken) || config.AccessTokenExpirationTime < DateTime.Now || String.IsNullOrWhiteSpace(config.RefreshToken))
            {

                // Request authorization from the user (by opening a browser window):
                Process.Start(authUri.ToString());
                do
                {
                  authCode = Prompt.ShowDialog("Test", "123");
                } while (String.IsNullOrWhiteSpace(authCode));
                state = arg.ProcessUserAuthorization(authCode, state);
            }
            else
            {
                state.AccessToken = config.AccessToken;
                state.AccessTokenExpirationUtc = config.AccessTokenExpirationTime;
                state.AccessTokenIssueDateUtc = config.AccessTokenIssueTime;
                state.RefreshToken =config.RefreshToken ;
                if (state.AccessTokenExpirationUtc < DateTime.Now)
                {
                    var tokenRefreshed = arg.RefreshToken(state);
                    if (tokenRefreshed)
                    {
                        config.AccessToken = state.AccessToken;
                        config.AccessTokenExpirationTime = state.AccessTokenExpirationUtc;
                        config.AccessTokenIssueTime = state.AccessTokenIssueDateUtc;
                        config.RefreshToken = state.RefreshToken;
                        arg.ProcessUserAuthorization(authCode, state);
                    }
                    else
                    {
                        throw new ApplicationException("Unable to refresh the token.");
                    }
                }
            }
            return state;
        }
        catch (System.Exception exp)
        {
            throw new ApplicationException("Failed to get authorisation from Google Calender.", exp);
        }
    }
+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос