예제 #1
0
파일: DiscuzCloud.cs 프로젝트: xiongeee/BBX
        public static string RegisterSite()
        {
            DiscuzCloudConfigInfo      config = DiscuzCloudConfigInfo.Current;
            DiscuzCloudMethodParameter discuzCloudMethodParameter = new DiscuzCloudMethodParameter();

            discuzCloudMethodParameter.Add("sName", GeneralConfigInfo.Current.Forumtitle);
            discuzCloudMethodParameter.Add("sSiteKey", config.Sitekey);
            discuzCloudMethodParameter.Add("sCharset", CHARSET);
            discuzCloudMethodParameter.Add("sTimeZone", "8");
            discuzCloudMethodParameter.Add("sLanguage", "zh_CN");
            discuzCloudMethodParameter.Add("sProductType", DiscuzCloud.productType);
            discuzCloudMethodParameter.Add("sProductVersion", DiscuzCloud.productVersion);
            discuzCloudMethodParameter.Add("sTimestamp", Utils.ConvertToUnixTimestamp(DateTime.Now).ToString());
            discuzCloudMethodParameter.Add("sApiVersion", "0.4");
            discuzCloudMethodParameter.Add("sSiteUid", BaseConfigs.GetFounderUid.ToString());
            discuzCloudMethodParameter.Add("sProductRelease", PRODUCT_RELEASE);
            discuzCloudMethodParameter.Add("sUrl", Utils.GetRootUrl(BaseConfigs.GetForumPath));
            discuzCloudMethodParameter.Add("sUCenterUrl", Utils.GetRootUrl(BaseConfigs.GetForumPath));
            BaseCloudResponse <RegisterCloud> cloudResponse = DiscuzCloud.GetCloudResponse <RegisterCloud>("site.register", discuzCloudMethodParameter);

            if (cloudResponse.ErrCode == 0)
            {
                config.Cloudsiteid  = cloudResponse.Result.CloudSiteId;
                config.Cloudsitekey = cloudResponse.Result.CloudSiteKey;

                //DiscuzCloudConfigs.SaveConfig(config);
                //DiscuzCloudConfigs.ResetConfig();
                config.Save();
                DiscuzCloudConfigInfo.Current = null;
            }
            return(cloudResponse.ErrMessage);
        }
예제 #2
0
        //public static string ResumeSite()
        //{
        //    DiscuzCloudMethodParameter mParams = new DiscuzCloudMethodParameter();
        //    mParams.Add("sUrl", Utils.GetRootUrl(BaseConfigs.GetForumPath));
        //    mParams.Add("sCharset", CHARSET);
        //    mParams.Add("sProductType", productType);
        //    mParams.Add("sProductVersion", productVersion);

        //    BaseCloudResponse<RegisterCloud> resumeCloudResult = GetCloudResponse<RegisterCloud>("site.resume", mParams);

        //    if (resumeCloudResult.ErrCode == 0 &&
        //        (resumeCloudResult.Result.CloudSiteId != config.Cloudsiteid || resumeCloudResult.Result.CloudSiteKey != config.Cloudsitekey))
        //    {
        //        config.Cloudsiteid = resumeCloudResult.Result.CloudSiteId;
        //        config.Cloudsitekey = resumeCloudResult.Result.CloudSiteKey;

        //        GeneralConfigs.SaveConfig(config);
        //        GeneralConfigs.ResetConfig();
        //    }

        //    return resumeCloudResult.ErrMessage;
        //}

        /// <summary>
        /// 同步站点信息,包括站点名称和站点地址
        /// </summary>
        /// <returns></returns>
        public static string SyncSite()
        {
            DiscuzCloudConfigInfo      config  = DiscuzCloudConfigs.GetConfig();
            DiscuzCloudMethodParameter mParams = new DiscuzCloudMethodParameter();

            mParams.Add("sId", config.Cloudsiteid);
            mParams.Add("sName", GeneralConfigs.GetConfig().Forumtitle);
            mParams.Add("sSiteKey", config.Sitekey);
            mParams.Add("sCharset", "utf-8");
            mParams.Add("sTimeZone", "8");
            mParams.Add("sLanguage", "zh_CN");
            mParams.Add("sProductType", productType);
            mParams.Add("sProductVersion", productVersion);
            mParams.Add("sApiVersion", "0.4");
            mParams.Add("sSiteUid", BaseConfigs.GetFounderUid > 0 ? BaseConfigs.GetFounderUid.ToString() : "1");
            mParams.Add("sProductRelease", PRODUCT_RELEASE);
            mParams.Add("sTimestamp", Utils.ConvertToUnixTimestamp(DateTime.Now).ToString());

#if DEBUG
            mParams.Add("sUrl", "http://247.mydev.com/~cailong/");
            mParams.Add("sUCenterUrl", "http://247.mydev.com/~cailong/");
#else
            mParams.Add("sUrl", Utils.GetRootUrl(BaseConfigs.GetForumPath));
            mParams.Add("sUCenterUrl", Utils.GetRootUrl(BaseConfigs.GetForumPath));
#endif
            BaseCloudResponse <bool> syncSiteResult = GetCloudResponse <bool>("site.sync", mParams);
            return(syncSiteResult.ErrMessage);
        }
예제 #3
0
        /// <summary>
        /// 获取云平台方法签名
        /// </summary>
        /// <param name="method"></param>
        /// <param name="timeStamp"></param>
        /// <param name="mParams"></param>
        /// <returns></returns>
        private static string GetCloudMethodSignature(string method, string timeStamp, DiscuzCloudMethodParameter mParams)
        {
            DiscuzCloudConfigInfo config = DiscuzCloudConfigs.GetConfig();

            return(Utils.MD5(string.Format("format={0}&method={1}&sId={2}{3}|{4}|{5}",
                                           FORMAT, method, config.Cloudsiteid, mParams.GetPostData(), config.Cloudsitekey, timeStamp)));
        }
예제 #4
0
        /// <summary>
        /// 获取云平台通知已绑定用户的接口地址
        /// </summary>
        /// <param name="connectInfo"></param>
        /// <param name="userName"></param>
        /// <param name="birthday"></param>
        /// <param name="gender"></param>
        /// <param name="email"></param>
        /// <param name="isPublicEmail"></param>
        /// <param name="isUsedQQAvatar"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string GetBindUserNotifyUrl(UserConnectInfo connectInfo, string userName, string birthday, int gender,
                                                  string email, int isPublicEmail, int isUsedQQAvatar, string type)
        {
            DiscuzCloudConfigInfo       config    = DiscuzCloudConfigs.GetConfig();
            List <DiscuzOAuthParameter> paramList = new List <DiscuzOAuthParameter>();

            paramList.Add(new DiscuzOAuthParameter("s_id", string.Empty));
            paramList.Add(new DiscuzOAuthParameter("openid", connectInfo.OpenId));
            paramList.Add(new DiscuzOAuthParameter("oauth_consumer_key", config.Connectappid));
            paramList.Add(new DiscuzOAuthParameter("u_id", connectInfo.Uid.ToString()));
            paramList.Add(new DiscuzOAuthParameter("username", userName));
            paramList.Add(new DiscuzOAuthParameter("birthday", birthday));
            string sex = "unknown";

            sex = gender == 1 ? "male" : sex;
            sex = gender == 2 ? "female" : sex;

            paramList.Add(new DiscuzOAuthParameter("sex", sex));
            paramList.Add(new DiscuzOAuthParameter("email", email));
            paramList.Add(new DiscuzOAuthParameter("is_public_email", isPublicEmail.ToString()));
            paramList.Add(new DiscuzOAuthParameter("is_use_qq_avatar", isUsedQQAvatar.ToString()));
            paramList.Add(new DiscuzOAuthParameter("statreferer", "forum"));
            paramList.Add(new DiscuzOAuthParameter("avatar_input", "234"));
            paramList.Add(new DiscuzOAuthParameter("avatar_agent", "23432"));
            paramList.Add(new DiscuzOAuthParameter("type", type));
            paramList.Add(new DiscuzOAuthParameter("site_ucenter_id", config.Sitekey));

            string queryString = "";
            string sig         = GenerateNotifySignature(paramList, config.Connectappid + "|" + config.Connectappkey, out queryString);

            return(CONNECT_URL + "notify/user/bind?" + queryString + "sig=" + sig);
        }
예제 #5
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);
        }
예제 #6
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");
            }
        }
예제 #7
0
        public override bool Run(CommandParameter commandParam, ref string result)
        {
            try
            {
                QQConnectAuthInfo authInfo = JavaScriptConvert.DeserializeObject <List <QQConnectAuthInfo> >(commandParam.CloudParams)[0];
                if (authInfo != null)
                {
                    DiscuzCloudConfigInfo config = DiscuzCloudConfigs.GetConfig();
                    config.Connectappid  = authInfo.AppId;
                    config.Connectappkey = authInfo.AppKey;

                    DiscuzCloudConfigs.SaveConfig(config);
                    DiscuzCloudConfigs.ResetConfig();
                    result = CloudUtils.GetCloudResponse <bool>(true);
                }
                else
                {
                    result = CloudUtils.GetCloudResponse <bool>(false);
                }
            }
            catch
            {
                result = CloudUtils.GetCloudResponse <bool>(false);
            }
            return(true);
        }
예제 #8
0
        public override bool Run(CommandParameter commandParam, ref string result)
        {
            string[] actionList = { "connect", "qqgroup" };
            string   action     = "";

            foreach (string act in actionList)
            {
                if (commandParam.CloudParams.IndexOf(string.Format("\"{0}\"", act)) != -1)
                {
                    action = act;
                    break;
                }
            }
            int enable = commandParam.CloudParams.IndexOf(string.Format("\"{0}\"", "normal")) != -1 ? 1 : 0;

            DiscuzCloudConfigInfo config = DiscuzCloudConfigs.GetConfig();
            bool changed = false;

            switch (action)
            {
            case "connect": config.Connectenabled = enable; changed = true; break;
            }
            if (changed)
            {
                DiscuzCloudConfigs.SaveConfig(config);
                DiscuzCloudConfigs.ResetConfig();
            }
            result = CloudUtils.GetCloudResponse <bool>(true);
            return(true);
        }
예제 #9
0
파일: DiscuzCloud.cs 프로젝트: xiongeee/BBX
        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);
        }
예제 #10
0
        public override bool Run(CommandParameter commandParam, ref string result)
        {
            DiscuzCloudConfigInfo config = DiscuzCloudConfigs.GetConfig();

            config.Cloudenabled = 1;
            DiscuzCloudConfigs.SaveConfig(config);
            DiscuzCloudConfigs.ResetConfig();

            result = CloudUtils.GetCloudResponse <bool>(Utils.UrlDecode(commandParam.CloudParams) == "[]");
            return(true);
        }
예제 #11
0
파일: DiscuzCloud.cs 프로젝트: xiongeee/BBX
        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);
        }
예제 #12
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);
        }
예제 #13
0
        /// <summary>
        /// 更换站点KEY
        /// </summary>
        /// <returns></returns>
        public static string ResetSiteKey()
        {
            DiscuzCloudConfigInfo      config  = DiscuzCloudConfigs.GetConfig();
            DiscuzCloudMethodParameter mParams = new DiscuzCloudMethodParameter();

            mParams.Add("sId", config.Cloudsiteid);
            BaseCloudResponse <RegisterCloud> resetCloudResult = GetCloudResponse <RegisterCloud>("site.resetKey", mParams);

            if (resetCloudResult.ErrCode == 0)
            {
                config.Cloudsitekey = resetCloudResult.Result.CloudSiteKey;
                DiscuzCloudConfigs.SaveConfig(config);
                DiscuzCloudConfigs.ResetConfig();
            }
            return(resetCloudResult.ErrMessage);
        }
예제 #14
0
        /// <summary>
        /// 获取指定云平台服务的开启状态,true为开启
        /// </summary>
        /// <param name="serviceName">服务名称(connect,connect_reg)</param>
        /// <returns></returns>
        public static bool GetCloudServiceEnableStatus(string serviceName)
        {
            DiscuzCloudConfigInfo config = DiscuzCloudConfigs.GetConfig();

            if (config.Cloudenabled == 0)
            {
                return(false);
            }

            switch (serviceName)
            {
            case "connect": return(config.Connectenabled == 1);

            case "connect_reg": return(config.Allowconnectregister == 1);

            default: return(false);
            }
        }
예제 #15
0
파일: DiscuzCloud.cs 프로젝트: xiongeee/BBX
        public static string ResetSiteKey()
        {
            DiscuzCloudConfigInfo      config = DiscuzCloudConfigInfo.Current;
            DiscuzCloudMethodParameter discuzCloudMethodParameter = new DiscuzCloudMethodParameter();

            discuzCloudMethodParameter.Add("sId", config.Cloudsiteid);
            BaseCloudResponse <RegisterCloud> cloudResponse = DiscuzCloud.GetCloudResponse <RegisterCloud>("site.resetKey", discuzCloudMethodParameter);

            if (cloudResponse.ErrCode == 0)
            {
                config.Cloudsitekey = cloudResponse.Result.CloudSiteKey;

                //DiscuzCloudConfigs.SaveConfig(config);
                //DiscuzCloudConfigs.ResetConfig();
                config.Save();
                DiscuzCloudConfigInfo.Current = null;
            }
            return(cloudResponse.ErrMessage);
        }
예제 #16
0
파일: DiscuzCloud.cs 프로젝트: xiongeee/BBX
        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);
        }
예제 #17
0
파일: DiscuzCloud.cs 프로젝트: xiongeee/BBX
        public static string SyncSite()
        {
            DiscuzCloudConfigInfo      config = DiscuzCloudConfigInfo.Current;
            DiscuzCloudMethodParameter discuzCloudMethodParameter = new DiscuzCloudMethodParameter();

            discuzCloudMethodParameter.Add("sId", config.Cloudsiteid);
            discuzCloudMethodParameter.Add("sName", GeneralConfigInfo.Current.Forumtitle);
            discuzCloudMethodParameter.Add("sSiteKey", config.Sitekey);
            discuzCloudMethodParameter.Add("sCharset", CHARSET);
            discuzCloudMethodParameter.Add("sTimeZone", "8");
            discuzCloudMethodParameter.Add("sLanguage", "zh_CN");
            discuzCloudMethodParameter.Add("sProductType", DiscuzCloud.productType);
            discuzCloudMethodParameter.Add("sProductVersion", DiscuzCloud.productVersion);
            discuzCloudMethodParameter.Add("sApiVersion", "0.4");
            discuzCloudMethodParameter.Add("sSiteUid", BaseConfigs.GetFounderUid.ToString());
            discuzCloudMethodParameter.Add("sProductRelease", PRODUCT_RELEASE);
            discuzCloudMethodParameter.Add("sTimestamp", Utils.ConvertToUnixTimestamp(DateTime.Now).ToString());
            discuzCloudMethodParameter.Add("sUrl", Utils.GetRootUrl(BaseConfigs.GetForumPath));
            discuzCloudMethodParameter.Add("sUCenterUrl", Utils.GetRootUrl(BaseConfigs.GetForumPath));
            BaseCloudResponse <bool> cloudResponse = DiscuzCloud.GetCloudResponse <bool>("site.sync", discuzCloudMethodParameter);

            return(cloudResponse.ErrMessage);
        }
예제 #18
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);
            }
        }
예제 #19
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);
        }