public override async Task Login(ZhiHuLoginInfo info, Action <RiBaoAuthoInfo> loginCallback)
        {
            if (IsAuthorized && TokenInfo != null)
            {
                var zhiHuAuthoData = await LoginZhiHu();

                loginCallback?.Invoke(zhiHuAuthoData);
                return;
            }
            try
            {
                _oauth.LoginCallback += async(isSuccess, err, response) =>
                {
                    if (isSuccess)
                    {
                        _oauth.IsAuthorized = true;
                        UpdateTokenInfo(response);
                        var zhiHuAuthoData = await LoginZhiHu();

                        loginCallback?.Invoke(zhiHuAuthoData);
                    }
                    else
                    {
                        loginCallback?.Invoke(null);
                    }
                };
                _oauth.BeginOAuth();
            }
            catch
            {
                loginCallback?.Invoke(null);
            }
        }
Example #2
0
        public static void Login(LoginType loginType, ZhiHuLoginInfo loginInfo, Action <bool> loginCallback)
        {
            if (IsLogin)
            {
                return;
            }

            if (loginCallback == null)
            {
                loginCallback = isSuccess => { }
            }
            ;

            string msg = string.Empty;

            if (!CheckLoginType(loginType, out msg))
            {
                loginCallback(false);
            }
            Authorizations[loginType].Login(loginInfo, autho => {
                var isSuccess = autho != null;
                if (isSuccess)
                {
                    UpdateLoginInfo(loginType, autho);
                }
                loginCallback?.Invoke(isSuccess);
            });
        }
Example #3
0
        public override async Task Login(ZhiHuLoginInfo info, Action <RiBaoAuthoInfo> loginCallback)
        {
            if (IsAuthorized)
            {
                loginCallback?.Invoke(await DataRequester.LoginUsingZhiHu(TokenInfo));
                return;
            }

            if (info == null)
            {
                loginCallback?.Invoke(null);
                return;
            }

            if (info.Captcha != null && !await CheckCaptcha(info.Captcha))
            {
                loginCallback?.Invoke(null);
                return;
            }

            var signInfo = await DataRequester.ZhiHuLogin(info.UserName, info.Password);

            if (!CheckError(signInfo))
            {
                loginCallback?.Invoke(null);
                return;
            }

            var zhiHuAutoInfo = await DataRequester.GetZhiHuAuthorization(signInfo);

            if (!CheckError(zhiHuAutoInfo))
            {
                loginCallback?.Invoke(null);
                return;
            }

            TokenInfo = await DataRequester.GetZhiHuToken(zhiHuAutoInfo);

            if (TokenInfo == null || string.IsNullOrEmpty(TokenInfo.access_token))
            {
                PopupMessage.DisplayMessage(StringUtil.GetString("LoginFailed") + TokenInfo?.Data ?? "");
                loginCallback?.Invoke(null);
                return;
            }
            TokenInfo.LastAuthoDate = DateTime.Now;
            TokenInfo.source        = LoginType.ZhiHu.Convert();
            StoreTokenInfo();
            var autoInfo = await DataRequester.LoginUsingZhiHu(TokenInfo);

            loginCallback?.Invoke(autoInfo);
        }
Example #4
0
 public abstract Task Login(ZhiHuLoginInfo info, Action <RiBaoAuthoInfo> loginCallback);