2013-08-03 1 views
0

Я разрабатываю для интеграции Google в ASP.NET. Я пытаюсь создать службу, используя токен доступа и обновить токен. Но я не могу получить токен обновления, так как я просто получаю токен доступа, тип токена и истекает. Пожалуйста, проверьте приведенный ниже код.Не удалось получить токен обновления в Календаре Google Версия 3

private String ExchangeCodeWithAccessAndRefreshToken() 
{ 
    string Url = "https://accounts.google.com/o/oauth2/token"; 
    string grant_type = "authorization_code"; 
    string redirect_uri_encode = UrlEncodeForGoogle(Convert.ToString(Session["URL"])); 
    string data = "code={0}&client_id={1}&client_secret={2}&redirect_uri={3}&grant_type={4}"; 
    string Code = Request.QueryString["Code"]; 
    HttpWebRequest request = HttpWebRequest.Create(Url) as HttpWebRequest; 
    string result = null; 
    request.Method = "POST"; 
    request.KeepAlive = true; 
    request.ContentType = "application/x-www-form-urlencoded"; 
    String ClientID = ConfigurationManager.AppSettings["clientID"].ToString(); 
    String ClientSecret = ConfigurationManager.AppSettings["clientSecret"].ToString(); 
    string param = string.Format(data, Code, ClientID, ClientSecret, redirect_uri_encode, grant_type); 
    var bs = Encoding.UTF8.GetBytes(param); 
    using (Stream reqStream = request.GetRequestStream()) 
    { 
     reqStream.Write(bs, 0, bs.Length); 
    } 

    using (WebResponse response = request.GetResponse()) 
    { 
     var sr = new StreamReader(response.GetResponseStream()); 
     result = sr.ReadToEnd(); 
     sr.Close(); 
    } 
    var jsonSerializer = new JavaScriptSerializer(); 
    var tokenData = jsonSerializer.Deserialize<GoogleTokenModel>(result); 
    return tokenData.Access_Token; 
} 

ответ

0

Попробуйте установить access_type=offline в вашем URL:

string data = "code={0}&client_id={1}&client_secret={2}&redirect_uri={3}&grant_type={4}&access_type=offline"; 
+0

Спасибо вам ответить, но я решить эту проблему, указав access_type = отсутствует & approval_prompt = сила и ранее я использовал access_type = отсутствует & approval_prompt = автоматический –

+0

Я хочу знать еще одну вещь, поскольку я перехожу от версии 2 к версии 3, поэтому я не могу выполнить какую-либо операцию, используя токен обновления версии 2, так что есть ли другая альтернатива для этого, чтобы я мог использовать мой уже существующий токен обновления , –

+0

, который действительно должен быть новым вопросом, поскольку это другая тема. –