/// <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); }
/// <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"); } }
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); }
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); }
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); }
/// <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); }
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); }
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); }
/// <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); } }
/// <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); }