예제 #1
0
        /// <summary>
        /// 构造函数,用于用户已经完成授权后,将OAuthToken持久化保存后,使用这个函数从持久化介质中获取到的
        /// OAuthToken,进行后续的API调用。
        /// </summary>
        /// <param name="oAuthToken"></param>
        public QOpenClient(OAuthToken oAuthToken)
        {
            this._oAuthToken = oAuthToken;
            var context = new QzoneContext(oAuthToken);

            restApi = new RestApi(context);
        }
예제 #2
0
 private void Init(string oAuthToken, string oAuthTokenSecret, string openId, QzoneContext context)
 {
     OAuthTokenKey    = oAuthToken;
     OAuthTokenSecret = oAuthTokenSecret;
     OpenID           = openId;
     restApi          = new RestApi(context);
 }
예제 #3
0
 /// <summary>
 /// 构造函数,初始化访问环境
 /// </summary>
 /// <param name="consumerKey"></param>
 /// <param name="consumerSecret"></param>
 /// <param name="oAuthToken"></param>
 /// <param name="oAuthTokenSecret"></param>
 /// <param name="authorized_verifier"></param>
 /// <param name="isApi"></param>
 /// <param name="openId"></param>
 public Qzone(string consumerKey,
              string consumerSecret,
              string oAuthToken,
              string oAuthTokenSecret,
              string authorized_verifier,
              bool isApi = false, string openId = "")
 {
     if (string.IsNullOrEmpty(consumerKey) || string.IsNullOrEmpty(consumerSecret) || string.IsNullOrEmpty(oAuthToken) ||
         string.IsNullOrEmpty(oAuthTokenSecret))
     {
         throw new ArgumentNullException("参数consumerKey、consumerSecret、oAuthToken、oAuthTokenSecret不能为空");
     }
     if (isApi)
     {
         if (string.IsNullOrEmpty(openId))
         {
             throw new ArgumentNullException("访问Qzone的api要求带获取到的token(access token)、token secret(access token secret)、openid。");
         }
     }
     if (!isApi)
     {
         QzoneContext context     = new QzoneContext(consumerKey, consumerSecret);
         var          accessToken = context.GetAccessToken(oAuthToken, oAuthTokenSecret, authorized_verifier);
         context.OAuthTokenKey    = accessToken.TokenKey;
         context.OAuthTokenSecret = accessToken.TokenSecret;
         Init(accessToken.TokenKey, accessToken.TokenSecret, accessToken.Openid, context);
     }
     else
     {
         QzoneContext context = new QzoneContext(consumerKey, consumerSecret, oAuthToken, oAuthTokenSecret, openId);
         Init(oAuthToken, oAuthTokenSecret, openId, context);
     }
 }
예제 #4
0
        /// <summary>
        /// 构造函数,用于用户接受授权后使用Authorization Code获取AccessToken
        /// </summary>
        /// <param name="verifierCode">Authorization Code(注意此code会在10分钟内过期)。</param>
        /// <param name="state">client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回</param>
        public QOpenClient(string verifierCode, string state)
        {
            var context = new QzoneContext(verifierCode);

            if (!string.IsNullOrEmpty(verifierCode))
            {
                this.OAuthToken = context.GetAccessToken(state);
            }
            restApi = new RestApi(context);
        }
예제 #5
0
        public string GetAuthorizationUrl(out QoAuthKey oAuthKey)
        {
            string scope = "get_user_info,add_share,list_album,upload_pic,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,add_one_blog,add_topic,get_tenpay_addr";

            oAuthKey = new QoAuthKey();
            QzoneContext context = new QzoneContext();

            context.Config.GetAppSecret();
            return(context.GetAuthorizationUrl(oAuthKey.State, scope));
        }
예제 #6
0
        public ActionResult LogInQQ()
        {
            var    context = new QzoneContext();
            string state   = Guid.NewGuid().ToString().Replace("-", "");

            Session["requeststate"] = state;
            string scope             = "get_user_info,add_share,list_album,upload_pic,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,add_one_blog,add_topic,get_tenpay_addr";
            var    authenticationUrl = context.GetAuthorizationUrl(state, scope);

            return(new RedirectResult(authenticationUrl));
        }
예제 #7
0
        public string RequestAuthentication()
        {
            var    storeScope             = this.GetActiveStoreScopeConfiguration(_storeService, _workContext);
            var    qqExternalAuthSettings = _settingService.LoadSetting <QQExternalAuthSettings>(storeScope);
            var    context           = new QzoneContext(string.Empty, new QQConnectConfig(qqExternalAuthSettings.AppKey, qqExternalAuthSettings.AppSecret, qqExternalAuthSettings.CallBackURI, qqExternalAuthSettings.AuthorizeURL));
            string state             = Guid.NewGuid().ToString().Replace("-", "");
            string scope             = "get_user_info,add_share,list_album,upload_pic,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,add_one_blog,add_topic,get_tenpay_addr";
            var    authenticationUrl = context.GetAuthorizationUrl(state, scope);

            Session["requeststate"] = state;
            return(authenticationUrl);
        }
예제 #8
0
        /// <summary>
        /// 获取授权登陆地址
        /// </summary>
        /// <returns></returns>
        public string GetAuthenticationUrl(string guid)
        {
            string url = string.Empty;

            if (!string.IsNullOrEmpty(guid))
            {
                this._state = guid;
                var content = new QzoneContext();
                url = content.GetAuthorizationUrl(this._state, this._scope);
            }
            return(url);
        }
예제 #9
0
        private void GetRequestToken()
        {
            var    context = new QzoneContext();
            string state   = Guid.NewGuid().ToString().Replace("-", "");
            string scope   = "get_user_info,add_share,list_album,upload_pic,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,add_one_blog,add_topic,get_tenpay_addr";
            //string scope = "get_user_info";
            var authenticationUrl = context.GetAuthorizationUrl(state, scope);

            //request token, request token secret 需要保存起来
            //在demo演示中,直接保存在全局变量中.真实情况需要网站自己处理
            Session["requeststate"] = state;

            Response.Redirect(authenticationUrl);
        }
예제 #10
0
 /// <summary>
 /// 构造函数,初始化访问QQ互联API的上下文数据
 /// </summary>
 /// <param name="context"></param>
 public RestApi(QzoneContext context)
 {
     this.context        = context;
     this._requestHelper = new RequestHelper();
     _restClient         = new RestClient(Endpoints.ApiBaseUrl);
 }