0

ASP.NET で Google との統合を開発しています。アクセス トークンとリフレッシュ トークンを使用してサービスを作成しようとしています。しかし、アクセストークン、トークンタイプ、有効期限を取得しているだけなので、リフレッシュトークンを取得できません。これについては、以下のコードを確認してください。

 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;
}
4

1 に答える 1

0

URL でaccess_type=offlineを設定してみてください。

string data = "code={0}&client_id={1}&client_secret={2}&redirect_uri={3}&grant_type={4}&access_type=offline";
于 2013-08-05T13:08:44.317 に答える