Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在asp.net中从刷新令牌google获取访问令牌_Asp.net_Asp.net Mvc 4_Google Api - Fatal编程技术网

如何在asp.net中从刷新令牌google获取访问令牌

如何在asp.net中从刷新令牌google获取访问令牌,asp.net,asp.net-mvc-4,google-api,Asp.net,Asp.net Mvc 4,Google Api,如何在asp.net中从刷新令牌Google获取访问令牌 您不应该基于应用程序的特定生命周期来设计应用程序 访问令牌。假设它们的寿命很短 但是,在成功完成OAuth2安装之后 在应用程序流中,您将获得一个刷新令牌。这次刷新 令牌永远不会过期,您可以使用它来交换访问权限 根据需要标记。保存刷新令牌,并使用它们获取访问权限 应立即使用的按需代币,以获得访问权限 用户数据 保存刷新令牌,并使用它们按需获取访问令牌,然后应立即使用这些令牌访问用户数据。如果你很好奇,你可以探索为它编写lib。否则,请避免

如何在asp.net中从刷新令牌Google获取访问令牌

您不应该基于应用程序的特定生命周期来设计应用程序 访问令牌。假设它们的寿命很短

但是,在成功完成OAuth2安装之后 在应用程序流中,您将获得一个刷新令牌。这次刷新 令牌永远不会过期,您可以使用它来交换访问权限 根据需要标记。保存刷新令牌,并使用它们获取访问权限 应立即使用的按需代币,以获得访问权限 用户数据

保存刷新令牌,并使用它们按需获取访问令牌,然后应立即使用这些令牌访问用户数据。如果你很好奇,你可以探索为它编写lib。否则,请避免重新发明车轮并使用
 private bool GetNewAccessToken(GoogleTokenModel GoogleTokenModelObj)
{
    try
    {
        string Url = "https://accounts.google.com/o/oauth2/token";
        string grant_type = "refresh_token";
        string redirect_uri_encode = UrlEncodeForGoogle(ReturnUrl);
        string data = "client_id={0}&client_secret={1}&refresh_token={2}&grant_type={3}";

        HttpWebRequest request = HttpWebRequest.Create(Url) as HttpWebRequest;
        string result = null;
        request.Method = "POST";
        request.KeepAlive = true;
        request.ContentType = "application/x-www-form-urlencoded";
        string param = string.Format(data, ClientID, ClientSecret, GoogleTokenModelObj.Refresh_Token, 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);

        GoogleTokenModelObj.Access_Token = TokenData.Access_Token;
        if (TokenData.Refresh_Token != null)
            GoogleTokenModelObj.Refresh_Token = TokenData.Refresh_Token;
        //GoogleTokenModelObj.LastAccessDateTime = DateTime.Now;

        //Update the refresh and access token in DB for next login usage
        //GoogleCalendarManager.UpdateRefreshTokenInGoogleAppointmentOAuth(GoogleTokenModelObj);
        XmlDocument XmlDoc = new XmlDocument();
        XmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory + "App_Data\\XMLfile.xml");
        XmlDoc.DocumentElement.SelectSingleNode("//User[@UserID='1']").Attributes["AccessToken"].Value = TokenData.Access_Token;
        XmlDoc.DocumentElement.SelectSingleNode("//User[@UserID='1']").Attributes["RefreshToken"].Value = TokenData.Refresh_Token;
        XmlDoc.Save(AppDomain.CurrentDomain.BaseDirectory + "App_Data\\XMLfile.xml");

        return true;

    }
    catch
    {
        return false;
    }
}