Как я могу сгенерировать токен обновления в asp.net?

Я могу получить токен доступа со стороны клиента с помощью средства выбора файлов Google. Но токен доступа истекает через 3600 секунд. Я почесал в затылке, чтобы получить токен обновления, но не смог сделать это на C # ASP.NET. Может ли кто-нибудь помочь с кодом C # понять и получить токен обновления? Это будет очень полезно. Спасибо.

Я пробовал использовать GoogleWebAuthorizationBroker.AuthorizeAsync, он работает на моем локальном компьютере, но не работает на производственном сервере IIS. Я также пробовал GoogleAuthorizationCodeFlow, но не смог продвинуться дальше и не знаю, как его использовать.

IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
                {
                    ClientSecrets = new ClientSecrets
                    {
                        ClientId = System.Configuration.ConfigurationManager.AppSettings["GoogleDriveClientID"],
                        ClientSecret = System.Configuration.ConfigurationManager.AppSettings["GoogleDriveClientSecret"]
                    },
                    Scopes = Scopes,
                    DataStore = null
                });

Я пробовал это, но не знаю, как дальше двигаться дальше.


person Vivek Kumar    schedule 30.05.2019    source источник
comment
Можете ли вы включить свое определение Scopes?   -  person Llama    schedule 30.05.2019
comment
общедоступная статическая строка [] Scopes = {DriveService.Scope.Drive};   -  person Vivek Kumar    schedule 30.05.2019
comment
@Vivek Посмотрите, решит ли это вашу проблему   -  person Md Farid Uddin Kiron    schedule 31.05.2019


Ответы (1)


Похоже, вы пытаетесь сгенерировать токен обновления из своего C# образца кода.

Вы можете попробовать следующий фрагмент кода:

Пример токена обновления:

public class AppFlowMetadata : FlowMetadata
    {
        private static readonly IAuthorizationCodeFlow flow =
            new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
                {
                    ClientSecrets = new ClientSecrets
                    {
                        ClientId = "yourClientId",
                        ClientSecret = "yourClientSecret"
                    },
                    Scopes = new[] { DriveService.Scope.Drive },
                    DataStore = new FileDataStore("Drive.Api.Auth.Store")
                });

        public override string GetUserId(Controller controller)
        {
            // In this sample we use the session to store the user identifiers.
            // That's not the best practice, because you should have a logic to identify
            // a user. You might want to use "OpenID Connect".
            // You can read more about the protocol in the following link:
            // https://developers.google.com/accounts/docs/OAuth2Login.
            var user = controller.Session["user"];
            if (user == null)
            {
                user = Guid.NewGuid();
                controller.Session["user"] = user;
            }
            return user.ToString();

        }

        public override IAuthorizationCodeFlow Flow
        {
            get { return flow; }
        }
    }

Примечание. Если у вас есть вопросы, как получить ClientId, ClientSecret и _ 5_ Пожалуйста, обратитесь к этим docs Пример MVC

Если у вас все еще есть какие-либо вопросы, не стесняйтесь поделиться. Спасибо и удачного кодирования!

person Md Farid Uddin Kiron    schedule 31.05.2019
comment
Спасибо. Но я использую ASP.NET, поэтому я думаю, что мне нужно соответствующим образом изменить этот код, поскольку он написан для MVC. - person Vivek Kumar; 31.05.2019
comment
Функциональность без проблем такая же. Нет разницы для веб-форм asp.net и MVC - person Md Farid Uddin Kiron; 27.06.2019