2017-02-21 7 views
0

私は、Windows 7上で毎日実行されるコンソールC#アプリケーションをコーディングしています。ユーザーの操作はありません。Boxリフレッシュトークンをプログラムで更新する方法はありますか?

アプリは単にOAuth2と最新のAPI/SDKを使用してCSVをBoxにアップロードします。

私は最終的にエンタープライズIDを使用したいと考えていますが、私は企業のサイトでこれをやっています。その使用許可を得ることは難しいです。だから、私は単に私のログインでアプリを作成し、アプリを承認し、手動で&が私のリフレッシュトークンを保存して受け取った。

C#でリフレッシュトークンを管理する方法がわかりません。私は非常に簡単に見えるようにJavaでいくつかのオブジェクトが表示されますが、対応するC#オブジェクトは表示されませんか?ボックスログインWebページを使用して60日後に手動でアプリケーションを再認証する必要がありますか?そうでない場合は、リフレッシュトークンが変更されたことを検出するために何をする必要がありますか?新しいトークンを取得するにはどうすればよいですか?

最新のAPIで多くのオブジェクトが変更されているように思えますし、コードを検索するたびに数年前のことであり、現在は廃止されています。

+0

APIの拡張メソッドやアドオンがない場合、これはあなた自身のロジックやクラスをコード化して、このようなものを処理するように見えるでしょう。私の意見では... – MethodMan

+0

私は、APIの一部が欠けているかどうか尋ねました。リッスンする必要があるイベント、変更されたリターンプロパティなどです。明らかに、ユーザー名とパスワードを保存してボックスに渡すことはできません監視されていないアプリケーションのログインWebページ。 – Quicksilver

+0

アプリがコンソールアプリの場合は、App.Configファイルにユーザー名とパスワードを保存して、そのセクションを暗号化してもらえますか? – MethodMan

答えて

1

私はそれを理解しましたが、その解決策はちょっとしたことです。

基本的には、必要に応じて、常に別の認証セッションを作成する準備が必要です。 1つの認証セッションを作成して有効かどうかを確認し、そうでない場合は、実際に使用する2つ目の認証セッションを作成します。

boxClient.Auth.SessionAuthenticated += Auth_SessionAuthenticated; 
boxClient.Auth.SessionInvalidated += Auth_SessionInvalidated; 

は私にとって、これは愚かなようだ - 私は一回/日私のアプリを実行しているので、私はちょうど私のトークンたびにリフレッシュしたい:あなたは、2つのイベントがトラップして、このためにテストします。ですから、私はいつも2つを作成します:

 var config = new BoxConfig(CLIENT_ID, CLIENT_SECRET, new Uri(RedirectURI)); 

     // Prior to this code snippet, I grabbed my starter access & refresh tokens from where I stored them in our db. 
     var auth = new OAuthSession(InitialToken, RefreshToken, 3600, "bearer"); 
     var client = new BoxClient(config, auth); 

     /// Try to refresh the access token 
     var realAuth = await client.Auth.RefreshAccessTokenAsync(auth.AccessToken); 
     /// Create the client again 
     var realClient = new BoxClient(config, realAuth); 

     //going to just log/update tokens every time. This only runs 1x/day, so should be no harm. 
     LogNewTokens(realAuth.AccessToken, realAuth.RefreshToken); 

そして、私は残りのBoxリクエストに対して "realClient"を使用します。

振り返ってみると、これらのリクエストをBoxに直接ポストし、返されたJSONを解析するためのコードを持ち上げるほうが速いのかもしれません。私は自分のトークンを自動的に更新して接続し、新しいものを簡単に利用できるようにする素敵なラッパーオブジェクトを持つことを期待していました。私は彼らがC#SDKでより良い仕事をすることができたと思います。

関連する問題