Beispiel #1
0
        /// <summary>
        /// 解除用户QQ绑定
        /// </summary>
        /// <param name="openId"></param>
        /// <returns></returns>
        public static int UnbindUserConnectInfo(string openId)
        {
            DiscuzCloudConfigInfo config          = DiscuzCloudConfigs.GetConfig();
            UserConnectInfo       userConnectInfo = DiscuzCloud.GetUserConnectInfo(openId);

            if (userConnectInfo == null)
            {
                return(-1);
            }

            List <DiscuzOAuthParameter> paramList = new List <DiscuzOAuthParameter>();

            paramList.Add(new DiscuzOAuthParameter("client_ip", DNTRequest.GetIP()));

            DiscuzOAuth oauth     = new DiscuzOAuth();
            string      queryStr  = "";
            string      unbindUrl = oauth.GetOAuthUrl(UNBIND_URL, "POST", config.Connectappid, config.Connectappkey, userConnectInfo.Token, userConnectInfo.Secret,
                                                      "", "", paramList, out queryStr);

            string response = Utils.GetHttpWebResponse(unbindUrl, queryStr);

            DeleteUserConnectInfo(openId);
            Utils.WriteCookie("bindconnect", "");
            return(1);
        }
Beispiel #2
0
        /// <summary>
        /// 获取QQ Connect 授权页面地址
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static string GetConnectLoginPageUrl(int userId)
        {
            DiscuzCloudConfigInfo       config    = DiscuzCloudConfigs.GetConfig();
            List <DiscuzOAuthParameter> paramList = new List <DiscuzOAuthParameter>();

            paramList.Add(new DiscuzOAuthParameter("client_ip", DNTRequest.GetIP()));
            paramList.Add(new DiscuzOAuthParameter("type", userId > 0 ? "loginbind" : "login"));

            DiscuzOAuth oauth           = new DiscuzOAuth();
            string      queryStr        = "";
            string      requestTokenUrl = oauth.GetOAuthUrl(REQUEST_TOKEN_URL, "POST", config.Connectappid, config.Connectappkey,
                                                            "", "", "", oauthCallback, paramList, out queryStr);

            string response = Utils.GetHttpWebResponse(requestTokenUrl, queryStr);

            try
            {
                ConnectResponse <OAuthTokenInfo> tokenInfo = JavaScriptConvert.DeserializeObject <ConnectResponse <OAuthTokenInfo> >(response);
                Utils.WriteCookie("connect", "token", tokenInfo.Result.Token);
                Utils.WriteCookie("connect", "secret", tokenInfo.Result.Secret);

                string authorizeUrl = oauth.GetOAuthUrl(AUTHORIZE_URL, "GET", config.Connectappid,
                                                        config.Connectappkey, tokenInfo.Result.Token,
                                                        tokenInfo.Result.Secret, "", oauthCallback,
                                                        new List <DiscuzOAuthParameter>(), out queryStr);
                return(authorizeUrl + "?" + queryStr);
            }
            catch
            {
                return("?Failed to get tmptoken");
            }
        }
Beispiel #3
0
        public static OAuthAccessTokenInfo GetConnectAccessTokenInfo()
        {
            var config = DiscuzCloudConfigInfo.Current;
            var list   = new List <DiscuzOAuthParameter>();

            list.Add(new DiscuzOAuthParameter("client_ip", DNTRequest.GetIP()));
            var    discuzOAuth = new DiscuzOAuth();
            string postData    = "";

            //var oAuthUrl = discuzOAuth.GetOAuthUrl(ACCESS_TOKEN_URL, "POST", config.Connectappid, config.Connectappkey, Utils.GetCookie("connect", "token"), Utils.GetCookie("connect", "secret"), DNTRequest.GetString("con_oauth_verifier"), "", list, out postData);
            var request         = HttpContext.Current.Request;
            var Session         = HttpContext.Current.Session;
            var oAuthUrl        = discuzOAuth.GetOAuthUrl(ACCESS_TOKEN_URL, "POST", config.Connectappid, config.Connectappkey, Session["connect_token"] + "", Session["connect_secret"] + "", DNTRequest.GetString("con_oauth_verifier"), "", list, out postData);
            var httpWebResponse = Utils.GetHttpWebResponse(oAuthUrl, postData);
            OAuthAccessTokenInfo result;

            try
            {
                var connectResponse = JavaScriptConvert.DeserializeObject <ConnectResponse <OAuthAccessTokenInfo> >(httpWebResponse);
                result = connectResponse.Result;
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);

                //XTrace.WriteLine(oAuthUrl);
                XTrace.WriteLine(httpWebResponse);
                XTrace.WriteLine("IP {0}, token {1}, secret {2}, verifier {3}, sid {4}, url {5}", DNTRequest.GetIP(), Session["connect_token"], Session["connect_secret"], DNTRequest.GetString("con_oauth_verifier"), Session.SessionID, request.Url);

                result = null;
            }
            return(result);
        }
Beispiel #4
0
        public static bool PushFeedToDiscuzCloud(TopicInfo topic, PostInfo post, AttachmentInfo[] attachments, UserConnect connectInfo, string ip, string rootUrl)
        {
            DiscuzCloudConfigInfo       config = DiscuzCloudConfigInfo.Current;
            List <DiscuzOAuthParameter> list   = new List <DiscuzOAuthParameter>();

            list.Add(new DiscuzOAuthParameter("client_ip", ip));
            list.Add(new DiscuzOAuthParameter("thread_id", topic.Tid.ToString()));
            list.Add(new DiscuzOAuthParameter("author_id", topic.Posterid.ToString()));
            list.Add(new DiscuzOAuthParameter("author", topic.Poster));
            list.Add(new DiscuzOAuthParameter("forum_id", topic.Fid.ToString()));
            list.Add(new DiscuzOAuthParameter("p_id", post.Pid.ToString()));
            list.Add(new DiscuzOAuthParameter("subject", topic.Title));
            GeneralConfigInfo config2 = GeneralConfigInfo.Current;

            list.Add(new DiscuzOAuthParameter("html_content", UBB.UBBToHTML(new PostpramsInfo
            {
                Sdetail     = post.Message,
                Smiliesinfo = Smilies.GetSmiliesListWithInfo(),
                Bbcodemode  = config2.Bbcodemode,
                Parseurloff = post.Parseurloff,
                BBCode      = post.Bbcodeoff < 1,
                Signature   = 0,
                Allowhtml   = post.Htmlon,
                Pid         = post.Pid,
                Showimages  = 1 - post.Smileyoff,
                Smileyoff   = post.Smileyoff,
                Smiliesmax  = config2.Smiliesmax,
                Hide        = 0
            })));
            list.Add(new DiscuzOAuthParameter("bbcode_content", post.Message));
            list.Add(new DiscuzOAuthParameter("read_permission", "0"));
            list.Add(new DiscuzOAuthParameter("u_id", topic.Posterid.ToString()));
            list.Add(new DiscuzOAuthParameter("f_type", TypeConverter.BooleanToIntString(connectInfo.AllowPushFeed)));
            StringBuilder stringBuilder = new StringBuilder();
            int           num           = 0;

            if (attachments != null)
            {
                for (int i = 0; i < attachments.Length; i++)
                {
                    AttachmentInfo attachmentInfo = attachments[i];
                    if (num < 3 && attachmentInfo.Filetype.IndexOf("image") > -1 && attachmentInfo.Attachprice <= 0)
                    {
                        stringBuilder.AppendFormat("|{0}upload/{1}", rootUrl, attachmentInfo.Filename.Replace("\\", "/"));
                        num++;
                    }
                }
            }
            list.Add(new DiscuzOAuthParameter("attach_images", stringBuilder.ToString().TrimStart('|')));
            DiscuzOAuth discuzOAuth = new DiscuzOAuth();
            string      postData    = "";
            string      oAuthUrl    = discuzOAuth.GetOAuthUrl(API_CONNECT_URL + "connect/feed/new", "POST", config.Connectappid, config.Connectappkey, connectInfo.Token, connectInfo.Secret, "", "", list, out postData);

            Utils.GetHttpWebResponse(oAuthUrl, postData);
            return(true);
        }
Beispiel #5
0
        public static bool DeletePushedFeedInDiscuzCloud(PushfeedLog feedInfo, string ip)
        {
            DiscuzCloudConfigInfo       config = DiscuzCloudConfigInfo.Current;
            List <DiscuzOAuthParameter> list   = new List <DiscuzOAuthParameter>();

            list.Add(new DiscuzOAuthParameter("client_ip", ip));
            list.Add(new DiscuzOAuthParameter("thread_id", feedInfo.ID.ToString()));
            DiscuzOAuth discuzOAuth = new DiscuzOAuth();
            string      postData    = "";
            string      oAuthUrl    = discuzOAuth.GetOAuthUrl(API_CONNECT_URL + "connect/feed/remove", "POST", config.Connectappid, config.Connectappkey, feedInfo.AuthorToken, feedInfo.AuthorSecret, "", "", list, out postData);

            Utils.GetHttpWebResponse(oAuthUrl, postData);
            return(true);
        }
Beispiel #6
0
        /// <summary>
        /// 发送删除已发送feed的请求到云平台接口
        /// </summary>
        /// <param name="feedInfo"></param>
        /// <param name="ip"></param>
        /// <returns></returns>
        public static bool DeletePushedFeedInDiscuzCloud(TopicPushFeedInfo feedInfo, string ip)
        {
            DiscuzCloudConfigInfo       config   = DiscuzCloudConfigs.GetConfig();
            List <DiscuzOAuthParameter> parmlist = new List <DiscuzOAuthParameter>();

            parmlist.Add(new DiscuzOAuthParameter("client_ip", ip));
            parmlist.Add(new DiscuzOAuthParameter("thread_id", feedInfo.TopicId.ToString()));

            DiscuzOAuth oAuth         = new DiscuzOAuth();
            string      queryStr      = "";
            string      deleteFeedUrl = oAuth.GetOAuthUrl(API_CONNECT_URL + "connect/feed/remove", "POST", config.Connectappid, config.Connectappkey,
                                                          feedInfo.AuthorToken, feedInfo.AuthorSecret, "", "", parmlist, out queryStr);

            Utils.GetHttpWebResponse(deleteFeedUrl, queryStr);
            return(true);
        }
Beispiel #7
0
        public static string GetConnectLoginPageUrl(int userId)
        {
            var config = DiscuzCloudConfigInfo.Current;
            var list   = new List <DiscuzOAuthParameter>();

            list.Add(new DiscuzOAuthParameter("client_ip", DNTRequest.GetIP()));
            list.Add(new DiscuzOAuthParameter("type", (userId > 0) ? "loginbind" : "login"));
            DiscuzOAuth discuzOAuth = new DiscuzOAuth();
            string      text        = "";
            string      callback    = DiscuzCloud.oauthCallback;
            var         request     = HttpContext.Current.Request;
            var         referrer    = request.UrlReferrer;

            if (referrer != null && !referrer.PathAndQuery.StartsWith("/logout.aspx", StringComparison.OrdinalIgnoreCase) &&
                !referrer.PathAndQuery.StartsWith("/login.aspx", StringComparison.OrdinalIgnoreCase) &&
                !referrer.PathAndQuery.StartsWith("/register.aspx", StringComparison.OrdinalIgnoreCase) &&
                !referrer.PathAndQuery.StartsWith("/connect.aspx", StringComparison.OrdinalIgnoreCase))
            {
                callback += "&url=" + referrer.PathAndQuery;
            }
            XTrace.WriteLine(callback);
            string oAuthUrl        = discuzOAuth.GetOAuthUrl(REQUEST_TOKEN_URL, "POST", config.Connectappid, config.Connectappkey, "", "", "", callback, list, out text);
            string httpWebResponse = Utils.GetHttpWebResponse(oAuthUrl, text);
            string result;

            try
            {
                var connectResponse = JavaScriptConvert.DeserializeObject <ConnectResponse <OAuthTokenInfo> >(httpWebResponse);

                //Utils.WriteCookie("connect", "token", connectResponse.Result.Token);
                //Utils.WriteCookie("connect", "secret", connectResponse.Result.Secret);
                var Session = HttpContext.Current.Session;
                Session["connect_token"]  = connectResponse.Result.Token;
                Session["connect_secret"] = connectResponse.Result.Secret;
                XTrace.WriteLine("IP {0}, token {1}, secret {2}, verifier {3}, sid {4}, url {5}", DNTRequest.GetIP(), Session["connect_token"], Session["connect_secret"], DNTRequest.GetString("con_oauth_verifier"), Session.SessionID, request.Url);

                string oAuthUrl2 = discuzOAuth.GetOAuthUrl(AUTHORIZE_URL, "GET", config.Connectappid, config.Connectappkey, connectResponse.Result.Token, connectResponse.Result.Secret, "", callback, new List <DiscuzOAuthParameter>(), out text);
                result = oAuthUrl2 + "?" + text;
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                result = "?Failed to get tmptoken";
            }
            return(result);
        }
Beispiel #8
0
        public static int UnbindUserConnectInfo(string openId)
        {
            DiscuzCloudConfigInfo config          = DiscuzCloudConfigInfo.Current;
            UserConnect           userConnectInfo = DiscuzCloud.GetUserConnectInfo(openId);

            if (userConnectInfo == null)
            {
                return(-1);
            }
            List <DiscuzOAuthParameter> list = new List <DiscuzOAuthParameter>();

            list.Add(new DiscuzOAuthParameter("client_ip", DNTRequest.GetIP()));
            DiscuzOAuth discuzOAuth = new DiscuzOAuth();
            string      postData    = "";
            string      oAuthUrl    = discuzOAuth.GetOAuthUrl(UNBIND_URL, "POST", config.Connectappid, config.Connectappkey, userConnectInfo.Token, userConnectInfo.Secret, "", "", list, out postData);

            Utils.GetHttpWebResponse(oAuthUrl, postData);
            DiscuzCloud.DeleteUserConnectInfo(openId);
            Utils.WriteCookie("bindconnect", "");
            return(1);
        }
Beispiel #9
0
        /// <summary>
        /// 获取当前Oauth用户的accessTokenInfo
        /// </summary>
        /// <returns></returns>
        public static OAuthAccessTokenInfo GetConnectAccessTokenInfo()
        {
            DiscuzCloudConfigInfo       config    = DiscuzCloudConfigs.GetConfig();
            List <DiscuzOAuthParameter> paramList = new List <DiscuzOAuthParameter>();

            paramList.Add(new DiscuzOAuthParameter("client_ip", DNTRequest.GetIP()));

            DiscuzOAuth oauth          = new DiscuzOAuth();
            string      queryStr       = "";
            string      accessTokenUrl = oauth.GetOAuthUrl(ACCESS_TOKEN_URL, "POST", config.Connectappid, config.Connectappkey,
                                                           Utils.GetCookie("connect", "token"), Utils.GetCookie("connect", "secret"),
                                                           DNTRequest.GetString("con_oauth_verifier"), "", paramList, out queryStr);
            string response = Utils.GetHttpWebResponse(accessTokenUrl, queryStr);

            try
            {
                ConnectResponse <OAuthAccessTokenInfo> accessTokenInfo = JavaScriptConvert.DeserializeObject <ConnectResponse <OAuthAccessTokenInfo> >(response);
                return(accessTokenInfo.Result);
            }
            catch
            {
                return(null);
            }
        }
Beispiel #10
0
        /// <summary>
        /// 发送feed请求到云平台
        /// </summary>
        /// <param name="topic"></param>
        /// <param name="post"></param>
        /// <param name="attachments"></param>
        /// <param name="connectInfo"></param>
        /// <returns></returns>
        public static bool PushFeedToDiscuzCloud(TopicInfo topic, PostInfo post, AttachmentInfo[] attachments, UserConnectInfo connectInfo, string ip, string rootUrl)
        {
            DiscuzCloudConfigInfo       config   = DiscuzCloudConfigs.GetConfig();
            List <DiscuzOAuthParameter> parmlist = new List <DiscuzOAuthParameter>();

            parmlist.Add(new DiscuzOAuthParameter("client_ip", ip));
            parmlist.Add(new DiscuzOAuthParameter("thread_id", topic.Tid.ToString()));
            parmlist.Add(new DiscuzOAuthParameter("author_id", topic.Posterid.ToString()));
            parmlist.Add(new DiscuzOAuthParameter("author", topic.Poster));
            parmlist.Add(new DiscuzOAuthParameter("forum_id", topic.Fid.ToString()));
            parmlist.Add(new DiscuzOAuthParameter("p_id", post.Pid.ToString()));
            parmlist.Add(new DiscuzOAuthParameter("subject", topic.Title));

            #region 构造postparmsinfo

            GeneralConfigInfo generalConfig = GeneralConfigs.GetConfig();
            PostpramsInfo     postpramsInfo = new PostpramsInfo();
            postpramsInfo.Sdetail     = post.Message;
            postpramsInfo.Smiliesinfo = Smilies.GetSmiliesListWithInfo();
            postpramsInfo.Bbcodemode  = generalConfig.Bbcodemode;
            postpramsInfo.Parseurloff = post.Parseurloff;
            postpramsInfo.Bbcodeoff   = post.Bbcodeoff;
            postpramsInfo.Signature   = 0;
            postpramsInfo.Allowhtml   = post.Htmlon;
            postpramsInfo.Pid         = post.Pid;
            postpramsInfo.Showimages  = 1 - post.Smileyoff;
            postpramsInfo.Smileyoff   = post.Smileyoff;
            postpramsInfo.Smiliesmax  = generalConfig.Smiliesmax;
            //判断是否为回复可见帖, hide=0为不解析[hide]标签, hide>0解析为回复可见字样, hide=-1解析为以下内容回复可见字样显示真实内容
            //将逻辑判断放入取列表的循环中处理,此处只做是否为回复人的判断,主题作者也该可见
            postpramsInfo.Hide = 0;

            #endregion
            parmlist.Add(new DiscuzOAuthParameter("html_content", UBB.UBBToHTML(postpramsInfo)));
            parmlist.Add(new DiscuzOAuthParameter("bbcode_content", post.Message));
            parmlist.Add(new DiscuzOAuthParameter("read_permission", "0"));
            parmlist.Add(new DiscuzOAuthParameter("u_id", topic.Posterid.ToString()));
            parmlist.Add(new DiscuzOAuthParameter("f_type", connectInfo.AllowPushFeed.ToString()));

            StringBuilder attachUrlList = new StringBuilder();
            int           attachCount   = 0;
            if (attachments != null)
            {
                foreach (AttachmentInfo info in attachments)
                {
                    if (attachCount < 3 && info.Filetype.IndexOf("image") > -1 && info.Attachprice <= 0)
                    {
                        attachUrlList.AppendFormat("|{0}upload/{1}", rootUrl, info.Filename.Replace("\\", "/"));
                        attachCount++;
                    }
                }
            }

            parmlist.Add(new DiscuzOAuthParameter("attach_images", attachUrlList.ToString().TrimStart('|')));

            DiscuzOAuth oAuth    = new DiscuzOAuth();
            string      queryStr = "";
            string      feedUrl  = oAuth.GetOAuthUrl(API_CONNECT_URL + "connect/feed/new", "POST",
                                                     config.Connectappid, config.Connectappkey, connectInfo.Token, connectInfo.Secret, "", "", parmlist, out queryStr);

            Utils.GetHttpWebResponse(feedUrl, queryStr);
            return(true);
        }