0

誰か助けてくれませんか。私は 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);
        });

私がやりたいことは、別のフォームをロードするときにUserTokenとをロードしてUserSecret、ファイルをドラッグ アンド ドロップし、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;
}

シークレットも同じ

それらを取得したら、ページの読み込み時にこれらの値を保持する 2 つのプロパティを取得します。

    public string UserToken { get; set; }
    public string UserSecret { get; set; }

問題は、データベースからロードしたこれらの値を DropNet に認識させる方法がわからず、ファイルのドラッグ アンド ドロップを開始できることです。

更新: _ClientDropNet のユーザー トークンとシークレットを取得する場所は次のとおりです。

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

誰かがそれを望むなら、ここに私のリポジトリがあります....

4

1 に答える 1

0

だから私はほとんどそこにいました。ページ読み込みイベントで新しい UserLogin インスタンスを作成するのではなく、DropNet クライアントの新しいインスタンスを作成するだけで済みました。

        UserAccountManagerBLL accMan = new UserAccountManagerBLL();

        UserToken = accMan.GetToken(Email);
        UserSecret = accMan.GetSecret(Email);

        _Client = new DropNetClient(appKey, appSecret, UserToken, UserSecret);
于 2015-06-07T19:22:15.737 に答える