1. 程式人生 > >關於新浪微博獲取access_token

關於新浪微博獲取access_token

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");
            string client_id = context.Request.QueryString["client_id"];
            string client_secret = context.Request.QueryString["client_secret"];
            string code = context.Request.QueryString["code"];
            string redirect_uri = context.Request.QueryString["redirect_uri"];
            string results = getWBaccess_token(client_id, client_secret, code, redirect_uri);
            context.Response.Write(results);
        }


        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
        public string getWBaccess_token(string client_id, string client_secret, string code, string redirect_uri)
        {
            string url = "https://api.weibo.com/oauth2/access_token?client_id=" + client_id + "&client_secret=" + client_secret + "&grant_type=authorization_code&redirect_uri=" + redirect_uri + "&code=" + code; ;
            string ReqStr = RequestPostDataUrl(url, string.Empty);


            return ReqStr;
        }


        #region Post請求伺服器資料
        public string RequestPostDataUrl(string url, string strPostDatas)
        {
            string strResponse = "";


            string targeturl = url.Trim().ToString();
            //如果是傳送HTTPS請求   
            HttpWebRequest Request = null;
            if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                Request = WebRequest.Create(url) as HttpWebRequest;
                Request.ProtocolVersion = HttpVersion.Version10;
            }
            else
            {
                Request = WebRequest.Create(url) as HttpWebRequest;
            }
            //HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(targeturl);
            Request.Method = "POST";
            Request.KeepAlive = true;
            Request.ContentType = "application/x-www-form-urlencoded";
            byte[] postDatas = null;
            if (strPostDatas != null && strPostDatas.Length > 0)
            {
                postDatas = Encoding.GetEncoding("utf-8").GetBytes(strPostDatas);


                Request.ContentLength = postDatas.Length;
                using (Stream reqStream = Request.GetRequestStream())
                {
                    reqStream.Write(postDatas, 0, postDatas.Length);
                }
            }
            HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
            using (Stream resStream = Response.GetResponseStream())
            {
                using (StreamReader sr = new StreamReader(resStream, System.Text.Encoding.GetEncoding("utf-8")))
                {
                    strResponse = sr.ReadToEnd();
                }
            }
            return strResponse;


        }
        #endregion
        private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true; //總是接受   
        }