Exemple #1
0
 public static Uri AddOrUpdateQuery(this Uri uri, IEnumerable <KeyValuePair <string, string> > parameter)
 {
     foreach (var nameValue in parameter)
     {
         uri = uri.AddOrUpdateQuery(nameValue.Key, nameValue.Value);
     }
     return(uri);
 }
Exemple #2
0
        /// <summary>
        /// 获取授权码,将会弹出授权窗口。
        /// </summary>
        /// <returns>授权码。</returns>
        /// <exception cref="AuthorizeException">用户取消授权或者授权过程中网络异常。</exception>
        private async Task <string> GetAuthorizeCodeAsync()
        {
            Uri requestUri = new Uri("https://api.weibo.com/oauth2/authorize");

            requestUri = requestUri.AddOrUpdateQuery("client_id", WeiboSettings.AppKey);
            requestUri = requestUri.AddOrUpdateQuery("redirect_uri", WeiboSettings.RedirectUri);

            if (DeviceHelper.IsDesktop)
            {
                requestUri = requestUri.AddOrUpdateQuery("display", "client");
            }
            else if (DeviceHelper.IsMobile)
            {
                requestUri = requestUri.AddOrUpdateQuery("display", "mobile");
            }

            WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, requestUri, new Uri(WeiboSettings.RedirectUri));

            switch (result.ResponseStatus)
            {
            case WebAuthenticationStatus.Success:
                string responseUrl   = result.ResponseData;
                string authorizeCode = new Uri(responseUrl).GetQueryParameter("code");
                return(authorizeCode);

            case WebAuthenticationStatus.UserCancel:
                throw new AuthorizeException("user cancel authorize")
                      {
                          Result = result
                      };

            case WebAuthenticationStatus.ErrorHttp:
                throw new AuthorizeException("http connection error")
                      {
                          Result = result
                      };

            default:
                throw new AuthorizeException("unknow error")
                      {
                          Result = result
                      };
            }
        }
Exemple #3
0
        public void TestAddOrUpdateQuery2()
        {
            Uri uri, uri2;

            uri  = new Uri("http://www.baidu.com");
            uri2 = uri.AddOrUpdateQuery(new Dictionary <string, string>()
            {
                { "sex", "male" }, { "name", "tom" }
            });

            Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?sex=male&name=tom");
        }
Exemple #4
0
        public void TestAddOrUpdateQuery()
        {
            Uri uri, uri2;

            uri  = new Uri("http://www.baidu.com");
            uri2 = UriHelper.AddOrUpdateQuery(uri, "name", "tom");
            Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?name=tom");

            uri  = new Uri("http://www.baidu.com/");
            uri2 = UriHelper.AddOrUpdateQuery(uri, "name", "tom");
            Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?name=tom");

            uri  = new Uri("http://www.baidu.com/?");
            uri2 = UriHelper.AddOrUpdateQuery(uri, "name", "tom");
            Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?name=tom");

            uri  = new Uri("http://www.baidu.com?name=tom");
            uri2 = uri.AddOrUpdateQuery("name", "mary");
            Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?name=mary");

            uri  = new Uri("http://www.baidu.com");
            uri2 = uri.AddOrUpdateQuery("t", "&");
            Assert.AreEqual(uri2.ToString(), "http://www.baidu.com/?t=%26");
        }