2014-07-08 1 views
0

Dropbox API를 사용하여 로그인 한 후 내 개인 보관 용 계정에 pdf를 보내려는 중 오류가 발생했습니다.xCode Dropbox (400) 오류

"[경고] DropboxSDK 다음 오류이다 /1/files_put/kDBRootAppFolder/Music.pdf에게 오류 결정 요청 -"보관 ","샌드 박스 "로 (400) 예상 '루트'또는 ' auto ', got u'kDBRootAppFolder' "

다음은 Xcode iOS 프로젝트에서 dropbox를 설정하기 위해 수행 한 작업입니다. didFinishLaunchingWithOptions 내 AppDelegate.m에서

난 다음 한 : 내 ViewController.mi에서

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url 
    sourceApplication:(NSString *)source annotation:(id)annotation { 
    if ([[DBSession sharedSession] handleOpenURL:url]) { 
     if ([[DBSession sharedSession] isLinked]) { 
      NSLog(@"App linked successfully!"); 
      // At this point you can start making API calls 
     } 
     [[NSNotificationCenter defaultCenter] 
     postNotificationName:@"isDropboxLinked" 
     object:[NSNumber numberWithBool:[[DBSession sharedSession] isLinked]]]; 


     return YES; 
    } 
    // Add whatever other url handling code is requires here if applicale 
    return NO; 
} 

는 다음과 같은 추가 :

는 AppDelegate.mi에서 또한
DBSession *dbSession = [[DBSession alloc] 
initWithAppKey:@"MYDROPBOXAPPKEY" 
appSecret:@"MYDROPBOXAPPSECRET" 
root:@"kDBRootAppFolder"]; // either kDBRootAppFolder or kDBRootDropbox 
[DBSession setSharedSession:dbSession]; 

이 (가) 다음 추가 UIButton에 연결했습니다.

- (void)didPressLink { 
    if (![[DBSession sharedSession] isLinked]) { 
     [[DBSession sharedSession] link]; 
    } 
} 

나는 또한 이것을 내 v에 가지고 있습니다. 보기로드

self.restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]]; 
self.restClient.delegate = self; 

내 버튼에 부딪혀서 Dropbox 로그인 화면을 수신하고 내 개인 계정 자격 증명으로 성공적으로 로그인 할 수 있습니다. 내가 성공적으로 로그인하면 다음 NSLog 응답을받습니다. "App linked successfully!" 이 NSLog 문을 AppDelegate.m있는 위의 코드를 참조하십시오. 지금까지 너무 좋아 (내가) 생각

이제 dropbox에 보내고 싶은 PDF를 만드는 버튼이 있습니다. pdf가 성공적으로 작성됩니다. 지금은 보관함에 파일을 보내려면이 코드가 나는 "DropboxSDK을 얻고있다

// Upload file to Dropbox 
    NSString *destDir = @"/"; 
    [self.restClient uploadFile:fileName toPath:destDir withParentRev:nil fromPath:localPath]; 

이것은 (파일 이름은이 시나리오에서 Music.pdf 호출 할 일이 내 PDF 파일의 이름입니다) :/1/fileops/delete에 대한 요청 오류 - (400) 'dropbox', 'sandbox'또는 'auto'가 될 'root'가 필요합니다. 'kDBRootAppFolder'가 있습니다. "왜 내가 누락 되었습니까?

참고 : 내 개인 자격 증명으로 성공적으로 로그인하고이 오류가 발생하면 AppDelegate.m으로 돌아가서 kDBRootAppFolder의 루트를 샌드 박스로 변경하고 앱을 다시 실행하고 음악을 보내보십시오. 드롭 박스에 pdf 파일이 있으면 작동합니다. 이것은 내 개인 보관 용 계정 로그인 정보에서 연결을 해제하고 다시 로그인하려고하면 "App linked successfully"가 표시되지 않기 때문에 해결책이 아닙니다. 내가 kdbRootAppFolder로 루트를 떠날 경우 위에 표시된대로. 생각 ........

답변

1

kDBRootAppFolder는 문자열이 아닌 상수가 아닌 것처럼 보입니다. Dropbox SDK는 Dropbox API 자체에 올바른 "루트"를 보내도록 kDBRootAppFolder 상수를 정의합니다.

그래서,이 :

root:@"kDBRootAppFolder"]; 

은 다음과 같아야합니다

root:kDBRootAppFolder];