2

Dropbox にファイルをアップロードする 3 つのアプリがあります。3つとも同じコード。それらはすべて同じフォルダーを共有しているため、同じ秘密鍵などを使用しました

ここが奇妙になるところです

1. 数か月間はすべて順調だった

2. ユーザーがログインしようとすると、アプリ 2 と 3 で最初のアプリが開きますか?

3. ログアウトしてログインしても、Dropbox への接続中にエラーが発生したため、後で試してくださいと表示されるだけです。

試したこと

同じものを共有するのではなく、3 つのアプリすべてに個別の秘密鍵などを作成しても、同じ動作が得られますか?

これに関するいくつかの調査では、Dropbox がアプリを介してユーザー アカウントにリンクする方法を変更し、アプリを削除してもリンクされる remin が変更されたことが示唆されています。他の誰かがこれについて何か経験がありますか?

Appdelegate

NSString* appKey = @"00000000000";
NSString* appSecret = @"0000000000";
NSString *root = kDBRootAppFolder;

DBSession* session = 
[[DBSession alloc] initWithAppKey:appKey appSecret:appSecret root:root];
session.delegate = self; // DBSessionDelegate methods allow you to handle re-authenticating
[DBSession setSharedSession:session];

[DBRequest setNetworkRequestDelegate:self];

viewController のボタン ハンドラ

LogCmd();
self.publishButtonPressed = YES;
if (![[DBSession sharedSession] isLinked]) {
    [self loginLogoutButtonPressed:nil];
} else {

    DBRestClient *restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
    restClient.delegate = self;
    NSError *error = nil;
    NSString *filePath = [ICUtils pathForDocument:self.fileName];
    [self.pdfData writeToFile:filePath options:0 error:&error];
    if (nil == error) {

        [restClient uploadFile:self.fileName
                        toPath:@"/"
                 withParentRev:nil
                      fromPath:filePath];
    } else {
        [ICUtils raiseAlertWithTitle:@"An error occurred" message:[error localizedDescription]];
    }
 }
}

注:シミュレーターでは問題なく動作しますが、問題はデバイスにのみ存在します

4

1 に答える 1

0

これは、複数のアプリケーションで同じキーを使用しているためです。Dropbox アプリは、アプリを起動するために、カスタム URL スキームを介してアプリと通信しています (iOS でアプリをプログラムで起動する方法は他にないため)。

つまり、Dropbox アプリは、そのカスタム URL スキームの登録済みアプリを開く「db-yoursecretkey://somemessage」を開くようにシステムに指示します。残念ながら、すべてのアプリが同じキーを使用しているため、すべてのアプリが同じカスタム スキームを使用しているため、システムは 1 つだけを選択します。おそらく最初のスキームです。

ただし、ドロップボックス内のすべてのフォルダーへのアクセスをアプリに許可することで、効果的にフォルダーを共有できます。したがって、3 つのアプリすべてで同じキーを使用する必要はありません。

于 2013-10-18T00:14:21.297 に答える