在c# WinForms应用程序中从数据库加载DropNet用户令牌和密钥

本文关键字:用户 DropNet 令牌 密钥 加载 数据库 WinForms 应用程序 | 更新日期: 2023-09-27 17:54:12

不知是否有人能帮忙。我正在使用DropNet客户端,我已经成功地授权了Dropbox的应用程序,我已经将用户令牌和秘密存储在SQL数据库中,这样我就可以再次访问它们,如下所示:

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

我想做的是加载另一个表单时加载UserTokenUserSecret,这样我就可以拖放文件并上传到Dropbox,而无需再次使用Dropbox验证应用程序。下面是我加载令牌和密钥的方法:

private void DropTray_Load(object sender, EventArgs e)
{
        DropboxAccess dAccess = new DropboxAccess();
        UserAccountManagerBLL accMan = new UserAccountManagerBLL();
        UserToken = accMan.GetToken(Email);
        UserSecret= accMan.GetSecret(Email);
        if (UserToken == null && UserSecret == null)
        {
            MessageBox.Show(returnError());
        }
        else
        {
            Rectangle workingArea = Screen.GetWorkingArea(this);
            this.Location = new Point(workingArea.Right - Size.Width,
                                      workingArea.Bottom - Size.Height);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        }
}

此方法用于获取令牌

public string GetToken(string eMail)
{
        using (cxn = new SqlConnection(this.ConnectionString))
        {
            using (cmd = new SqlCommand("spGetDetails", cxn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cxn.Open();
                SqlDataReader dReader = cmd.ExecuteReader();
                while (dReader.Read())
                {
                    Utoken = dReader["UserToken"].ToString();
                    break;
                }
                dReader.Close();
                cxn.Close();
            }
        }
        return Utoken;
}

secret

一旦我有了它们,我有两个属性将在页面加载时保存这些值:
    public string UserToken { get; set; }
    public string UserSecret { get; set; }

问题是我不知道如何让DropNet识别我从数据库加载的这些值,我可以开始拖放文件!

更新:这里是_Client获得用户令牌和DropNet的秘密:

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

如果有人想要它,这是我的存储库....

在c# WinForms应用程序中从数据库加载DropNet用户令牌和密钥

我就快到了。事实证明,我所要做的就是创建一个新的DropNet客户端实例,而不是在页面加载事件上创建一个新的UserLogin实例!

        UserAccountManagerBLL accMan = new UserAccountManagerBLL();
        UserToken = accMan.GetToken(Email);
        UserSecret = accMan.GetSecret(Email);
        _Client = new DropNetClient(appKey, appSecret, UserToken, UserSecret);