Beispiel #1
0
        // 测试之前,请先配置 QQConnect
        public void testAuth()
        {
            Console.WriteLine("请按任意键开始用户授权……");
            Console.ReadLine();

            QQConnect connect = AuthConnectFactory.GetConnect(typeof(QQConnect).FullName) as QQConnect;

            if (connect == null)
            {
                throw new Exception("尚未配置");
            }

            Console.WriteLine("启动浏览器...");
            connect.CallbackUrl = "http://www.wojilu.com";
            Process.Start(connect.GetAuthorizationFullUrl());

            Console.Write("请拷贝浏览器地址栏code的值,粘贴到此处:");
            string code = Console.ReadLine();

            Console.WriteLine("授权的code=" + code);


            Console.WriteLine("开始获取access token……");

            AccessToken result = OAuthClient.New().GetAccessToken(connect, code, connect.HttpMethod_AccessToken);

            Console.WriteLine("access token=" + result.Token);
            Console.WriteLine("uid=" + result.Uid);


            // 获取openId
            String openIdUrl = "https://graph.qq.com/oauth2.0/me?access_token=" + result.Token;
            String response  = wojilu.Net.PageLoader.Download(openIdUrl);

            Console.WriteLine("获取openid返回结果=" + response);

            String     strJson   = strUtil.TrimStart(response.Trim().TrimEnd(';'), "callback(").TrimEnd(')');
            JsonObject obj       = Json.ParseJson(strJson);
            String     openIdMsg = "openid=" + obj.Get("openid");

            Console.WriteLine(openIdMsg);
            logger.Info(openIdMsg);

            //---------------------------------------------------------------------

            Console.WriteLine("请按 Enter 键结束……");
            Console.ReadLine();
        }
Beispiel #2
0
        protected string Login(string AppId, string AppKey, string CallbackUrl)
        {
            string url = "";

            currentUser.State = Guid.NewGuid().ToString("N");

            SetReturnUrl(currentUser.State, ReturnUrl);

            QQConnect connect = new QQConnect(AppId, AppKey, currentUser.State, UrlParameterHelper.UrlEncode(CallbackUrl));

            if (connect != null)
            {
                SaveUserInfo(currentUser);
                url = connect.GetAuthorizationCodeUrl("get_user_info");
            }

            return(url);
        }
Beispiel #3
0
        public void testUploadPic()
        {
            QQConnect connect = AuthConnectFactory.GetConnect(typeof(QQConnect).FullName) as QQConnect;

            if (connect == null)
            {
                throw new Exception("尚未配置");
            }

            AccessToken x = new AccessToken {
                Token = accessToken
            };
            String content = "这是来自QQ互联api的微博内容" + DateTime.Now;

            JsonObject jsonValue = connect.PublishPic(x, content, "c:\\testpic.jpg");

            Assert.AreEqual("ok", jsonValue.Get("msg"));
        }
Beispiel #4
0
        public void testProfile()
        {
            Console.WriteLine("请按任意键,开始发布……");
            Console.ReadLine();

            QQConnect connect = AuthConnectFactory.GetConnect(typeof(QQConnect).FullName) as QQConnect;

            if (connect == null)
            {
                throw new Exception("尚未配置");
            }

            AccessToken x = new AccessToken();

            x.Token = accessToken;

            OAuthUserProfile obj = connect.GetUserProfile(x);

            Assert.IsNotNull(obj);

            Console.WriteLine("id=" + obj.Uid);
            Console.WriteLine("name=" + obj.Name);

            Assert.IsNotNull(obj.Uid);
            Assert.IsNotNull(obj.Name);
            Assert.IsTrue(obj.Name.Length > 0);

            // 用户头像(小50×50像素)
            Console.WriteLine("profile_image_url=" + obj.PicUrlSmall);
            Assert.IsNotNull(obj.PicUrlSmall);
            Assert.IsTrue(obj.PicUrlSmall.Length > 0);

            // 用户头像(大)
            Console.WriteLine("avatar_large=" + obj.PicUrlBig);
            Assert.IsNotNull(obj.PicUrlBig);
            Assert.IsTrue(obj.PicUrlBig.Length > 0);

            Console.WriteLine("domain=" + obj.FriendlyUrl);

            Console.WriteLine("请按 Enter 键结束……");
            Console.ReadLine();
        }
Beispiel #5
0
        protected string Notify(string AppId, string AppKey, string CallbackUrl, int union = 0)
        {
            string url = "";

            if (!string.IsNullOrEmpty(Code) && !string.IsNullOrEmpty(State) && string.Compare(State, currentUser.State, true) == 0)
            {
                QQConnect connect = new QQConnect(AppId, AppKey, State, UrlParameterHelper.UrlEncode(CallbackUrl));

                if (connect != null && connect.GetAccessTokenByCode(Code) && connect.GetOpenIdByToken(union) &&
                    !string.IsNullOrEmpty(connect.AccessToken) && !string.IsNullOrEmpty(connect.OpenId))
                {
                    currentUser.Token  = connect.AccessToken;
                    currentUser.OpenId = connect.OpenId;
                    string             result = string.Empty;
                    QQConnect.UserInfo model  = new QQConnect.UserInfo();
                    if (connect.GetUserInfo(out result, out model) && !string.IsNullOrEmpty(result) && string.Compare(model.ret, "0", true) == 0)
                    {
                        currentUser.NickName = model.nickname;
                        string nickName = string.Empty;

                        AccessUsersInfo accessUsersInfo = new AccessUsersInfo();
                        accessUsersInfo                  = GetClientLogInfo(accessUsersInfo) as AccessUsersInfo;
                        accessUsersInfo.AccessToken      = currentUser.Token;
                        accessUsersInfo.UserName         = "";
                        accessUsersInfo.NickName         = currentUser.NickName;
                        accessUsersInfo.Email            = "";
                        accessUsersInfo.Icon             = model.figureurl_qq_2;
                        accessUsersInfo.Phone            = "";
                        accessUsersInfo.Platform         = Constants.AccessUserPlatform.qq.ToString();
                        accessUsersInfo.OpenId           = currentUser.OpenId;
                        accessUsersInfo.AccessToken      = currentUser.Token;
                        accessUsersInfo.LoginInvalidTime = DateTime.Now;
                        accessUsersInfo.RecentLoginTime  = DateTime.Now;
                        accessUsersInfo.AddTime          = DateTime.Now;
                        accessUsersInfo.Status           = (int)Constants.Status.yes;
                        if (union == 1)
                        {
                            accessUsersInfo.UnionId = connect.UnionId;
                        }
                        Users users = new Users();
                        users.Fee      = 0;
                        users.UserName = CreateUserName(out nickName);
                        users.Icon     = "";
                        users.Phone    = "";
                        int rel = 0;
                        if ((rel = _accessUsersService.Register(accessUsersInfo, users)) == (int)ErrorMessage.成功)
                        {
                            LoginedAccessUsers loginedAccessUsers = _accessUsersService.AccessLogin(accessUsersInfo);
                            if (loginedAccessUsers != null && loginedAccessUsers.Id > 0)
                            {
                                currentUser.UserId   = loginedAccessUsers.Id;
                                currentUser.UserName = loginedAccessUsers.UserName;
                                currentUser.NickName = loginedAccessUsers.NickName;
                                SaveUserInfo(currentUser);

                                //ChapterReadLogSync(loginedAccessUsers.UserName, loginedAccessUsers.Id);

                                url = GetReturnUrl(State);
                            }
                        }
                    }
                }
            }

            return(url);
        }