SharpBox 1.2 を使用して、以下のコードで認証します。
private async void toDropBoxBtn_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
config = CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox) as DropBoxConfiguration;
DropBoxRequestToken requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(config, "7nu03leznnz6x74", "ex3gge8av7kp9lq");
//it hangs at the line above ^ (requestToken)
String AuthorizationUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(config, requestToken);
ICloudStorageAccessToken accessToken = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(config, "7nu03leznnz6x74", "ex3gge8av7kp9lq", requestToken);
}
ここのドキュメントを見ると、
SharpBox ライブラリには、多くの操作のための同期関数と非同期関数の両方があります。どちらの形式もデスクトップでの使用に役立ちますが、これらの呼び出しは実行中の UI スレッドをブロックし、アプリケーション全体をブロックするため、同期バージョンを Windows Phone アプリで直接使用することはできません。
非同期関数は UI スレッドで使用できます。必要な関数が同期バリアントにのみ存在する場合、これらを別の (非 UI) スレッドで実行し、コールバックを使用して結果を返すことができます。
それが私のコード ハングの問題のようです。そのため、このrequestToken行を処理する新しいスレッドを作成することにしました。私が見つけた提案のほとんどは次のとおりです。
System.Threading.Thread thread = new System.Threading.Thread(getMyToken);
thread.Start();
次のgetMyTokenように:
private void getMyToken()
{
MessageBox.Show("In getMyToken()");
requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(config, "7nu03leznnz6x74", "ex3gge8av7kp9lq");
}
もちろん、constructor() の前にstatic DropBoxRequestToken requestToken;and を宣言しました。static DropBoxConfiguration config;
したがって、私の新しいコードは次のようになります。
config = CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox) as DropBoxConfiguration;
MessageBox.Show("Done 1st!");
System.Threading.Thread thread = new System.Threading.Thread(getMyToken);
thread.Start();
String AuthorizationUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(config, requestToken);
MessageBox.Show("Done 2nd!");
ICloudStorageAccessToken accessToken = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(config, "7nu03leznnz6x74", "ex3gge8av7kp9lq", requestToken);
うん、私はそれらの MessageBox をどこに行くかを追跡するために置きました。問題は、 「最初に完了!」を得たことです。、次に「2番目に完了!」「一発で完成!」のはずなのに、、「getMyToken() で」、「2 番目に完了!」. しかし、 「2番目にやった!」の直後。メソッドに入った直後に、メソッドSystem.UnauthorizedAccessExceptionによって引き起こされた例外です (行で例外が発生します)。getMyTokenMessageBox.Show("In getMyToken()");
何が起こっているのかわかりません。この投稿では明確に説明できない場合があるため、詳細についてはお気軽にお問い合わせください。お時間をいただきありがとうございます。