Exemple #1
0
        //-----------------------------------------------------------------------------

        public override OAuthUserProfile GetUserProfile(AccessToken accessToken)
        {
            JsonObject user = OAuthClient.Init(this.UserProfileUrl, accessToken.Token, HttpMethod.Get)
                              .AddParam(createParams(accessToken, ""))
                              .RunJson()
                              .GetJson("data");

            if (user == null)
            {
                logger.Error("无法获取正常 user profile");
                return(null);
            }

            // 头像
            String picUrl = user.Get("head");

            picUrl = correctPic(picUrl);

            OAuthUserProfile x = new OAuthUserProfile();

            x.Uid         = accessToken.Uid;
            x.Name        = user.Get("nick");
            x.PicUrlSmall = picUrl;
            x.PicUrlBig   = picUrl;

            return(x);
        }
Exemple #2
0
        public void testProfile()
        {
            // 如果报错 source paramter(appkey) is missing,很有可能是 access token 过期

            Console.WriteLine("请按任意键,开始发布……");
            Console.ReadLine();

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

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

            AccessToken x = new AccessToken();

            x.Token = accessToken;
            x.Uid   = "3214151865";

            OAuthUserProfile obj = connect.GetUserProfile(x);

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

            // 用户头像(小50×50像素)
            Console.WriteLine("profile_image_url=" + obj.PicUrlSmall);
            // 用户头像(大)
            Console.WriteLine("avatar_large=" + obj.PicUrlBig);

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

            Console.WriteLine("请按 Enter 键结束……");
            Console.ReadLine();
        }
Exemple #3
0
        public void testProfile()
        {
            Console.WriteLine("请按任意键,开始发布……");
            Console.ReadLine();

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

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

            AccessToken x = new AccessToken();

            x.Token = accessToken;
            x.Uid   = openId;

            OAuthUserProfile obj = connect.GetUserProfile(x);

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

            // 用户头像(小50×50像素)
            Console.WriteLine("profile_image_url=" + obj.PicUrlSmall);
            // 用户头像(大)
            Console.WriteLine("avatar_large=" + obj.PicUrlBig);

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

            Console.WriteLine("请按 Enter 键结束……");
            Console.ReadLine();
        }
Exemple #4
0
        private void processBind(AuthConnect connect, String code)
        {
            if (ctx.viewer.IsLogin == false)
            {
                echoError("对不起,请先登录");
                return;
            }

            // 检查是否绑定过
            if (connectService.HasBind(ctx.viewer.Id, connect.GetType().FullName))
            {
                echoError("对不起,已经绑定");
                return;
            }

            // 获取用户 uid
            AccessToken x = OAuthClient.New().GetAccessToken(connect, code, connect.HttpMethod_AccessToken);

            x.Uid = connect.GetUid(x);

            // 获取用户名称
            OAuthUserProfile userProfile = null;

            try {
                userProfile = connect.GetUserProfile(x);
            }
            catch (HttpClientException ex) {
                if (ex.Message.IndexOf("applications over the unaudited use restrictions") > 0)
                {
                    echo(getTestRestrictionsMsg("绑定"));
                    return;
                }
                else
                {
                    throw ex;
                }
            }

            x.Name = userProfile.Name;

            Result result = connectService.Create(ctx.viewer.obj as User, connect.GetType().FullName, x);

            // 日志
            logger.Info("accessToken=" + x.Token);
            logger.Info("uid=" + x.Uid);
            logger.Info("refresh_token=" + x.RefreshToken);
            logger.Info("expires_in=" + x.ExpiresIn);
            logger.Info("scope=" + x.Scope);

            if (result.HasErrors)
            {
                echo(result.ErrorsHtml);
            }
            else
            {
                echoRedirect(lang("opok"), "/");
            }
        }
Exemple #5
0
        private void loadUserProfile(AuthConnect connect, AccessToken accessToken)
        {
            OAuthUserProfile user = connect.GetUserProfile(accessToken);

            ctx.SetItem("__currentOAuthUser", user);
            ctx.SetItem("__currentAccessToken", accessToken);

            content(loadHtml(confirmUserInfo));
        }
        public override OAuthUserProfile GetUserProfile( AccessToken accessToken )
        {
            JsonObject user = OAuthClient.Init( this.UserProfileUrl, accessToken.Token, HttpMethod.Get )
                .AddParam( "uid", accessToken.Uid )
                .RunJson();

            if (user.Get<long>( "id" ) <= 0) {
                logger.Error( "无法获取正常 user profile" );
                return null;
            }

            OAuthUserProfile x = new OAuthUserProfile();
            x.Uid = accessToken.Uid;
            x.Name = user.Get( "name" );
            x.FriendlyUrl = user.Get( "domain" );
            x.PicUrlSmall = user.Get( "profile_image_url" );
            x.PicUrlBig = user.Get( "avatar_large" );

            return x;
        }
Exemple #7
0
        public override OAuthUserProfile GetUserProfile(AccessToken accessToken)
        {
            JsonObject user = OAuthClient.Init(this.UserProfileUrl, accessToken.Token, HttpMethod.Get)
                              .AddParam("uid", accessToken.Uid)
                              .RunJson();

            if (user.Get <long>("id") <= 0)
            {
                logger.Error("无法获取正常 user profile");
                return(null);
            }

            OAuthUserProfile x = new OAuthUserProfile();

            x.Uid         = accessToken.Uid;
            x.Name        = user.Get("name");
            x.FriendlyUrl = user.Get("domain");
            x.PicUrlSmall = user.Get("profile_image_url");
            x.PicUrlBig   = user.Get("avatar_large");

            return(x);
        }
Exemple #8
0
        //-----------------------------------------------------------------------------

        public override OAuthUserProfile GetUserProfile(AccessToken accessToken)
        {
            JsonObject user = OAuthClient.Init(this.UserProfileUrl, accessToken.Token, HttpMethod.Get)
                              //.SetEncoding( "utf-8" )
                              .AddParam(createParams(accessToken, ""))
                              .RunJson();

            if (user.Get <long>("ret") != 0)
            {
                logger.Error("无法获取正常 user profile, 原因:" + user.Get("msg"));
                return(null);
            }

            OAuthUserProfile x = new OAuthUserProfile();

            x.Uid         = accessToken.Uid;
            x.Name        = user.Get("nickname");
            x.PicUrlSmall = user.Get("figureurl_1");
            x.PicUrlBig   = user.Get("figureurl_2");

            return(x);
        }
Exemple #9
0
        public virtual void confirmUserInfo()
        {
            target(SaveFirstLogin);

            OAuthUserProfile user        = ctx.GetItem("__currentOAuthUser") as OAuthUserProfile;
            AccessToken      accessToken = ctx.GetItem("__currentAccessToken") as AccessToken;

            String userName = getUserName(user.Name);

            set("userName", userName);
            set("userUrl", getUserUrl(userName, user.FriendlyUrl));
            set("userPic", user.PicUrlSmall);

            set("userUrlPrefix", sys.Url.SiteUrl);
            set("urlExt", MvcConfig.Instance.UrlExt);

            // hidden
            set("uid", accessToken.Uid);
            set("accessToken", accessToken.Token);
            set("refreshToken", accessToken.RefreshToken);
            set("expiresIn", accessToken.ExpiresIn);
            set("scope", accessToken.Scope);
        }
        //-----------------------------------------------------------------------------
        public override OAuthUserProfile GetUserProfile( AccessToken accessToken )
        {
            JsonObject user = OAuthClient.Init( this.UserProfileUrl, accessToken.Token, HttpMethod.Get )
                .AddParam( createParams( accessToken, "" ) )
                .RunJson()
                .GetJson( "data" );

            if (user == null) {
                logger.Error( "无法获取正常 user profile" );
                return null;
            }

            // 头像
            String picUrl = user.Get( "head" );
            picUrl = correctPic( picUrl );

            OAuthUserProfile x = new OAuthUserProfile();
            x.Uid = accessToken.Uid;
            x.Name = user.Get( "nick" );
            x.PicUrlSmall = picUrl;
            x.PicUrlBig = picUrl;

            return x;
        }
Exemple #11
0
        public virtual void SaveFirstLogin()
        {
            if (ctx.viewer.IsLogin)
            {
                echoError("对不起,您已经登录");
                return;
            }

            Object connectType = ctx.web.SessionGet("__connectType");

            if (connectType == null)
            {
                echoError("无效的 connect type");
                return;
            }

            AuthConnect connect = AuthConnectFactory.GetConnect(connectType.ToString());

            if (connect == null)
            {
                echoError("此连接类型不存在:" + connectType);
                return;
            }

            AccessToken accessToken = getAccessToken();

            OAuthUserProfile userProfile = connect.GetUserProfile(accessToken);

            if (userProfile == null)
            {
                echoError("无法获取正常 user profile");
                return;
            }

            accessToken.Name = userProfile.Name;

            // 注册用户
            User user = new User();

            user.Name = ctx.Post("userName");
            user.Url  = ctx.Post("userUrl");

            Result result = userService.RegisterNoPwd(user);

            if (result.HasErrors)
            {
                echoError(result);
                return;
            }

            result = AvatarUploader.SaveRemote(userProfile.PicUrlBig, user.Id);
            if (result.IsValid)
            {
                user.Pic = result.Info.ToString();
                user.update();
            }
            else
            {
                echoError(result);
                return;
            }

            // 是否开启空间
            RegHelper.CheckUserSpace(user, ctx);

            // 绑定用户
            Result saveResult = connectService.Create(user, connect.GetType().FullName, accessToken);

            if (saveResult.IsValid)
            {
                UserConnect userConnect = saveResult.Info as UserConnect;
                loginService.Login(user, userConnect.Id, LoginTime.OneWeek, ctx.Ip, ctx);   // 登录
                echoRedirect("登录成功", "/");
            }
            else
            {
                echoError(saveResult);
            }
        }
Exemple #12
0
        //-----------------------------------------------------------------------------
        public override OAuthUserProfile GetUserProfile( AccessToken accessToken )
        {
            JsonObject user = OAuthClient.Init( this.UserProfileUrl, accessToken.Token, HttpMethod.Get )
                //.SetEncoding( "utf-8" )
                .AddParam( createParams( accessToken, "" ) )
                .RunJson();

            if (user.Get<long>( "ret" ) != 0) {
                logger.Error( "无法获取正常 user profile, 原因:" + user.Get( "msg" ) );
                return null;
            }

            OAuthUserProfile x = new OAuthUserProfile();
            x.Uid = accessToken.Uid;
            x.Name = user.Get( "nickname" );
            x.PicUrlSmall = user.Get( "figureurl_1" );
            x.PicUrlBig = user.Get( "figureurl_2" );

            return x;
        }