簡體   English   中英

DropNet登錄測試

[英]DropNet Login Test

所以我只是在為正在開發的新.net應用程序測試DropNet客戶端,而我只是想通過這樣做登錄

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");
            });


    }

然后嘗試通過執行以下操作在消息框中顯示我的帳戶信息:

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"); 在全班最高。

有什么建議么?

您正在將異步調用視為同步調用。

每個異步調用都需要等待上一個返回,然后才能繼續。

這是通過利用每個異步調用的成功Action來完成的,對於Process.Start()而言,使用Process.WaitForExit()進行調用,然后再繼續。

最后,由於並非所有瀏覽器都返回一個進程(例如Chrome),因此Process.Start()必須顯式使用iexplore。

    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());
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM