Beispiel #1
0
        private Dictionary<string, string> GetUserInfo(FacebookAccessToken token)
        {
            Dictionary<string, string> info = new Dictionary<string, string>();

            string facebookEndpoint = "https://graph.facebook.com/me";

            string tokenArgs = string.Format("access_token={0}",
                UrlEncode(token.AccessToken));

            HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(facebookEndpoint + "?" + tokenArgs);

            try
            {
                HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

                if (response.StatusCode != HttpStatusCode.OK)
                {
                }
                else
                {
                    Encoding encode = Encoding.GetEncoding("utf-8");
                    StreamReader sr = new StreamReader(response.GetResponseStream(), encode);

                    string responseString = sr.ReadToEnd();

                    info = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseString);
                }
            }
            catch (System.Net.WebException ex)
            {
                if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.BadRequest)
                {
                    return null;
                }
                else
                {
                    return null;
                }
            }

            return info;
        }
Beispiel #2
0
        internal FacebookAccessToken RefreshOAuthAccessToken(Core core, FacebookAccessToken token)
        {
            string facebookEndpoint = "https://graph.facebook.com/oauth/access_token";
            string redirectTo = (core.Settings.UseSecureCookies ? "https://" : "http://") + Hyperlink.Domain + "/api/facebook/callback";

            string tokenArgs = string.Format("grant_type=fb_exchange_token&client_id={0}&client_secret={1}&fb_exchange_token={2}",
                appId, appSecret, token.AccessToken);

            HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(facebookEndpoint + "?" + tokenArgs);

            HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

            if (response.StatusCode != HttpStatusCode.OK)
            {
            }
            else
            {
                Encoding encode = Encoding.GetEncoding("utf-8");
                StreamReader sr = new StreamReader(response.GetResponseStream(), encode);

                string responseString = sr.ReadToEnd();

                NameValueCollection responseDictionary = HttpUtility.ParseQueryString(responseString);

                if (!string.IsNullOrEmpty(responseDictionary["access_token"]))
                {
                    long expires = 0;
                    long.TryParse(responseDictionary["expires"], out expires);

                    return new FacebookAccessToken(string.Empty, responseDictionary["access_token"], expires);
                }
            }

            return null;
        }
Beispiel #3
0
        public FacebookPost StatusesUpdate(FacebookAccessToken token, string message, string link, string sharePermissions)
        {
            string method = "POST";
            string facebookEndpoint = string.Format("https://graph.facebook.com/{0}/feed", token.UserId);

            string body = "message=" + UrlEncode(message);

            if (!string.IsNullOrEmpty(link))
            {
                body += "&link=" + UrlEncode(link);
            }
            if (!string.IsNullOrEmpty(sharePermissions))
            {
                body += "&privacy=" + UrlEncode("{'value':'" + sharePermissions + "'}");
            }
            body += "&access_token=" + UrlEncode(token.AccessToken);

            HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(facebookEndpoint);
            wr.ProtocolVersion = HttpVersion.Version11;
            wr.UserAgent = "HttpCore/1.1";
            wr.ContentType = "application/x-www-form-urlencoded";
            wr.Method = method;
            wr.ContentLength = body.Length;

            byte[] bodyBytes = UTF8Encoding.UTF8.GetBytes(body);

            Stream stream = wr.GetRequestStream();
            stream.Write(bodyBytes, 0, bodyBytes.Length);

            HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

            string postId = string.Empty;

            if (response.StatusCode != HttpStatusCode.OK)
            {
            }
            else
            {
                Encoding encode = Encoding.GetEncoding("utf-8");
                StreamReader sr = new StreamReader(response.GetResponseStream(), encode);

                string responseString = sr.ReadToEnd();

                Dictionary<string, string> info = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseString);
                postId = info["id"];
            }

            return new FacebookPost(postId);
        }
Beispiel #4
0
        internal FacebookAccessToken OAuthAppAccessToken(Core core, string userId)
        {
            string facebookEndpoint = "https://graph.facebook.com/oauth/access_token";

            string tokenArgs = string.Format("client_id={0}&client_secret={1}&grant_type=client_credentials",
                appId, appSecret);

            HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(facebookEndpoint + "?" + tokenArgs);

            HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

            if (response.StatusCode != HttpStatusCode.OK)
            {
            }
            else
            {
                Encoding encode = Encoding.GetEncoding("utf-8");
                StreamReader sr = new StreamReader(response.GetResponseStream(), encode);

                string responseString = sr.ReadToEnd();

                NameValueCollection responseDictionary = HttpUtility.ParseQueryString(responseString);

                if (!string.IsNullOrEmpty(responseDictionary["access_token"]))
                {
                    FacebookAccessToken token = new FacebookAccessToken(responseDictionary["access_token"], userId);
                    return token;
                }
            }

            return null;
        }
Beispiel #5
0
        public void DeleteStatus(FacebookAccessToken token, string postId)
        {
            string method = "DELETE";
            string facebookEndpoint = string.Format("https://graph.facebook.com/{0}", postId);

            string tokenArgs = string.Format("access_token={0}",
                token.AccessToken);

            HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(facebookEndpoint + "?" + tokenArgs);
            wr.ProtocolVersion = HttpVersion.Version11;
            wr.UserAgent = "HttpCore/1.1";
            wr.ContentType = "application/x-www-form-urlencoded";
            wr.Method = method;

            HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

            if (response.StatusCode != HttpStatusCode.OK)
            {
            }
            else
            {
                Encoding encode = Encoding.GetEncoding("utf-8");
                StreamReader sr = new StreamReader(response.GetResponseStream(), encode);

                string responseString = sr.ReadToEnd();
            }
        }