首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DropNet登录测试

DropNet登录测试
EN

Stack Overflow用户
提问于 2015-05-02 15:52:45
回答 1查看 394关注 0票数 0

因此,我只是为我正在开发的一个新的DropNet应用程序测试.net客户端,我只是尝试通过这样做来登录

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
    {
        _client.GetTokenAsync((userLogin) =>
            {
            },
            (error) =>
            {
                MessageBox.Show("Error getting Token");
            });

        var uLogin = _client.GetToken();

        var url = _client.BuildAuthorizeUrl(uLogin);

        System.Diagnostics.Process.Start(url);

        _client.GetAccessTokenAsync((accessToken) =>
            {

            },
            (error) =>
            {
                MessageBox.Show("Error getting Access Token");
            });


    }

然后执行以下操作,试图在消息框中显示我的帐户信息:

代码语言:javascript
复制
private void button2_Click(object sender, EventArgs e)
    {
        _client.AccountInfoAsync((accountInfo) =>
            {
                MessageBox.Show(accountInfo.ToString());
            },
            (error) =>
            {
                MessageBox.Show("Error displaying data");
            }
            );
    }

单击按钮2时显示错误消息。

我还宣布我的DropNetClient _Client = new DropNetClient("API KEY", "API SECRET");在班上名列前茅。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-02 21:19:21

您将异步调用视为同步调用。

在继续之前,每个异步调用都需要等待前面的调用返回。

这是通过使用每个异步调用的成功操作来完成的,如果是Process.Start(),则在继续之前使用Process.WaitForExit()调用。

最后,Process.Start()必须显式使用iexplore,因为并非所有浏览器都返回进程(例如Chrome)。

代码语言:javascript
复制
    public string UserToken { get; set; }
    public string UserSecret { get; set; }

    private DropNetClient _Client;
    public DropNetClient Client
    {
        get
        {
            if (_Client == null)
            {
                _Client = new DropNetClient(AppKey, AppSecret);

                if (IsAuthenticated)
                {
                    _Client.UserLogin = new UserLogin
                    {
                        Token = UserToken,
                        Secret = UserSecret
                    };
                }

                _Client.UseSandbox = true;
            }

            return _Client;
        }
    }

    public bool IsAuthenticated
    {
        get
        {
            return UserToken != null &&
                UserSecret != null;
        }
    }

    public void Authenticate(Action<string> success, Action<Exception> failure)
    {
        Client.GetTokenAsync(userLogin =>
        {
            var url = Client.BuildAuthorizeUrl(userLogin);
            if (success != null) success(url);
        }, error =>
        {
            if (failure != null) failure(error);
        });
    }

    public void Authenticated(Action success, Action<Exception> failure)
    {
        Client.GetAccessTokenAsync((accessToken) =>
        {
            UserToken = accessToken.Token;
            UserSecret = accessToken.Secret;
            if (success != null) success();
        },
        (error) =>
        {
            if (failure != null) failure(error);
        });
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Authenticate(
               url => {
                   var proc = Process.Start("iexplore.exe", url);
                   proc.WaitForExit(); 
                    Authenticated(
                        () =>
                        {
                            MessageBox.Show("Authenticated");
                        },
                        exc => ShowException(exc));

               },
               ex => ShowException(ex));
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Client.AccountInfoAsync((a) =>
        {
            MessageBox.Show(a.display_name);
        },
        ex => ShowException(ex));
    }

    private void ShowException(Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30004343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档