O token de atualização da API do Google OAuth 2 é nulo

Estou desenvolvendo um aplicativo Asp.NET MVC5seguindo este código de amostra do Google.

Desejo que o aplicativo seja autenticado e crie um token de acesso (estágio de configuração) por um usuário e, posteriormente, preciso chamar o Google APis (API de diretório no meu caso) usando um token de atualização (sem intervenção do usuário, algo como " desligada").

Controlador:

public async Task<ActionResult> IndexAsync(CancellationToken cancellationToken)
{
    var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
                        AuthorizeAsync(cancellationToken);

        if (result.Credential != null)
        {
          var service = new Google.Apis.Admin.Directory.directory_v1.DirectoryService(new BaseClientService.Initializer
                        {
                            HttpClientInitializer = result.Credential,
                            ApplicationName = "My Application"
                        });
                      return View();
        }
        else
        {
             return new RedirectResult(result.RedirectUri);
        }
}         

Implementação de FlowMetadata. (Estou usando o FiledataStore ligeiramente modificado (GoogleFileDataStore))

public class AppFlowMetadata : FlowMetadata
    {
        //Move to settings
        static readonly string clientId = "xxxccnvofsdfsfoj.apps.googleusercontent.com";
        static readonly string clientsecret = "xxxxxxxxxxLvtC6Qbqpp4x_";
        static readonly string datastore = "AdminSDK.Api.Auth.Store";


         private static readonly IAuthorizationCodeFlow flow =
            new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
                {
                    ClientSecrets = new ClientSecrets
                    {
                        ClientId = clientId,
                        ClientSecret = clientsecret
                    },
                    Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser, DirectoryService.Scope.AdminDirectoryUserAliasReadonly },
                    DataStore = new GoogleFileDataStore(datastore)
                });


        public override string GetUserId(Controller controller)
        {           
            return ConfigHelper.UserID.ToString();
        }

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

Quando chamo o controlador IndexAsync, como não há acesso prévio ao usuário, ele cria um novo após o usuário fazer login na conta do Google.
Este é um exemplo de acesso a token,

{"access_token":"ya29.5gBOszGO-oYJJt4YZfF6FeaZth1f69_.....","token_type":"Bearer","expires_in":3600,"Issued":"2014-12-24T16:02:32.014+05:30"}

Question1: Por que não há um Refreshtoken armazenado com isso? Como recuperar um token de atualização? Pergunta 2: Se eu receber o refreshtoken, como devo modificar o código para criar um novo token de acesso e chamar a API (quando o accesstoken expirar)? [Me referi aessa questão , mas não houve resposta adequada para o token de atualização ausente.

questionAnswers(1)

yourAnswerToTheQuestion