コード例 #1
0
    public bool PostTwitter()
    {
        string resultID = hdnSelectedMessageID.Value;

        string requestCode = string.Empty;

        if (Session[TwitterCodeSessionKey] != null)
        {
            requestCode = Session[TwitterCodeSessionKey].ToString();
        }

        if (requestCode == null)
        {
            Session[MessageKey] = txtFeedContent.Text.Trim();
            //Session[TitleKey] = txtTitle.Text.Trim();
            Session[ShareCodeType] = "Twitter";

            OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
                TwitterConsumerKey, TwitterConsumerSecret, Request.Url.AbsoluteUri);


            string url = string.Format("http://twitter.com/oauth/authorize?oauth_token={0}", reqToken.Token);
            Response.Redirect(url, false);
        }
        else
        {
            if (txtFeedContent.Text.Length < 140)
            {
                string requestToken = Session[TwitterCodeSessionKey].ToString();
                string pin          = Session[TwitterAuthVerifierSessionKey].ToString();

                var tokens = OAuthUtility.GetAccessToken(
                    TwitterConsumerKey,
                    TwitterConsumerSecret,
                    requestToken,
                    pin);

                OAuthTokens accesstoken = new OAuthTokens()
                {
                    AccessToken       = tokens.Token,
                    AccessTokenSecret = tokens.TokenSecret,
                    ConsumerKey       = TwitterConsumerKey,
                    ConsumerSecret    = TwitterConsumerSecret
                };

                TwitterResponse <TwitterStatus> response = TwitterStatus.Update(
                    accesstoken,
                    txtFeedContent.Text.Trim());



                if (response != null && response.Result == RequestResult.Success)
                {
                    SocialFeedController feedController = new SocialFeedController();
                    UserChoiceInfo       userChoiceInfo = feedController.ConvertToUserChoice(response, txtFeedContent.Text, resultID);
                    int output = feedController.SaveUserChoice(userChoiceInfo);

                    if (output == 1)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (response != null)
                    {
                        twitterCallBackContent = response.Content;
                    }
                }
            }
            else
            {
                twitterCallBackContent = "The character length for twitter posts must be not exceed more than 140 characters.";
            }
        }


        return(false);
    }
コード例 #2
0
    private bool PostLinkedIn()
    {
        string requestCode = Session[LinkedInCodeSessionKey].ToString();

        if (requestCode == null)
        {
            Session[MessageKey] = txtFeedContent.Text.Trim();
            //Session[TitleKey] = txtTitle.Text.Trim();

            var config = new LinkedInApiConfiguration(LinkedInAppID, LinkedInSecret);
            var api    = new LinkedInApi(config);

            string queryString = Request.Url.Query;

            string redirectUrl = Request.Url.AbsoluteUri;
            if (queryString.Trim() != string.Empty)
            {
                redirectUrl = redirectUrl.Replace(queryString, string.Empty);
            }

            var scope = AuthorizationScope.ReadBasicProfile | AuthorizationScope.ReadEmailAddress | AuthorizationScope.WriteShare | AuthorizationScope.ReadWriteCompanyPage;
            var state = Guid.NewGuid().ToString();
            var url   = api.OAuth2.GetAuthorizationUrl(scope, state, redirectUrl);

            Response.Redirect(url.AbsoluteUri, false);
        }
        else
        {
            int linkedInCompanyID = int.Parse(LinkedInCompanyID);

            string queryString = Request.Url.Query;

            string redirectUrl = Request.Url.AbsoluteUri;
            if (queryString.Trim() != string.Empty)
            {
                redirectUrl = redirectUrl.Replace(queryString, string.Empty);
            }

            try
            {
                string message = txtFeedContent.Text.Trim();

                var config = new LinkedInApiConfiguration(LinkedInAppID, LinkedInSecret);
                // get the APIs client
                var api = new LinkedInApi(config);
                AuthorizationAccessToken userToken = api.OAuth2.GetAccessToken(requestCode, redirectUrl);

                if (userToken != null)
                {
                    string   acessToken           = userToken.AccessToken;
                    DateTime authorizationDateUTC = userToken.AuthorizationDateUtc;
                    int?     expiresIn            = userToken.ExpiresIn;

                    AccessTokenController accessTokenController = new AccessTokenController();
                    int addUpdateResult = accessTokenController.AddLinkedInAccessToken(acessToken, authorizationDateUTC, expiresIn);
                }

                UserAuthorization user = new UserAuthorization(userToken.AccessToken);

                PostShareResult postShareResult = api.Companies.Share(
                    user,
                    linkedInCompanyID, new PostShare()
                {
                    Visibility = new Visibility()
                    {
                        Code = "anyone"
                    },
                    Comment = message
                });

                string resultID = hdnSelectedMessageID.Value;
                SocialFeedController feedController = new SocialFeedController();
                UserChoiceInfo       userChoiceInfo = feedController.ConvertToUserChoice(postShareResult.Location, postShareResult.UpdateKey, postShareResult.UpdateUrl, message, resultID);

                int output = feedController.SaveUserChoice(userChoiceInfo);

                if (output == 1)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                ProcessException(ex);
            }
        }

        return(false);
    }
コード例 #3
0
    public bool PostFacebook()
    {
        string requestCode = Session[FBCodeSessionKey].ToString();

        string scope = "publish_actions";

        if (requestCode == null)
        {
            Session[MessageKey] = txtFeedContent.Text.Trim();
            string queryString = Request.Url.Query;

            string redirectUrl = Request.Url.AbsoluteUri;
            if (queryString.Trim() != string.Empty)
            {
                redirectUrl = redirectUrl.Replace(queryString, string.Empty);
            }
            string url = string.Format(
                "https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}",
                FBAppID, redirectUrl, scope);
            Response.Redirect(url, false);
        }
        else
        {
            string accessToken = string.Empty;
            //Dictionary<string, string> tokens = new Dictionary<string, string>();

            string queryString = Request.Url.Query;

            string redirectUrl = Request.Url.AbsoluteUri;
            if (queryString.Trim() != string.Empty)
            {
                redirectUrl = redirectUrl.Replace(queryString, string.Empty);
            }

            string url = string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}",
                                       FBAppID, redirectUrl, scope, requestCode, FBSecret);

            try
            {
                WebRequest  request  = WebRequest.Create(url);
                WebResponse response = request.GetResponse();

                dynamic responseData = null;
                using (Stream responseStream = response.GetResponseStream())
                {
                    StreamReader reader         = new StreamReader(responseStream, Encoding.UTF8);
                    String       responseString = reader.ReadToEnd();

                    try
                    {
                        responseData = JObject.Parse(responseString);
                        accessToken  = responseData.access_token;
                    }
                    catch { }

                    //foreach (string token in responseString.Split('&'))
                    //{
                    //    tokens.Add(token.Substring(0, token.IndexOf("=")),
                    //        token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf("=") - 1));
                    //}

                    //NameValueCollection query = HttpUtility.ParseQueryString(responseString);
                    //accessToken = query["access_token"];
                }

                //string access_token = tokens["access_token"];
                dynamic parameters = new ExpandoObject();
                parameters.message = txtFeedContent.Text.Trim();

                if (accessToken != string.Empty)
                {
                    var client = new FacebookClient(accessToken);
                    //client = new FacebookClient(access_token);
                    var returnID = client.Post("/me/feed", parameters);

                    if (returnID != null)
                    {
                        if (returnID["id"] != null)
                        {
                            string rtID     = returnID["id"];
                            string message  = txtFeedContent.Text.Trim();
                            string resultID = hdnSelectedMessageID.Value;
                            SocialFeedController feedController = new SocialFeedController();
                            UserChoiceInfo       userChoiceInfo = feedController.ConvertToUserChoice(rtID, message, resultID);

                            int output = feedController.SaveUserChoice(userChoiceInfo);
                            if (output == 1)
                            {
                                return(true);
                            }
                        }
                    }
                }
                else
                {
                    facebookCallBackContent = "Unable to obtain an access token for facebook";
                }
            }
            catch (Exception ex)
            {
                facebookCallBackContent = ex.Message;
                ProcessException(ex);
            }
        }

        return(false);
    }