¿Cómo puedo autorizar más de una count de Dropbox en una aplicación?

Estoy buscando actualizar una de mis aplicaciones (que es un cliente de Dropbox) para tener soporte para varias counts, pero no puedo encontrar la manera de hacerlo.

He analizado el SDK muchas veces y no importa cuántas veces lo mire, parece que una count que utiliza el SDK oficial solo puede admitir una count a la vez. Aunque estoy seguro de que puede admitir más, ya que sé de muchas aplicaciones que le permiten vincular más de una.

Cualquier sugerencia para hacer esto será muy apreciada. Ni siquiera puedo encontrar una forma de search fichas para almacenarlas por separado más tarde.

Encontré que esto era un desafío, pero finalmente funcionó después de mucha experimentación. Aquí hay algunos fragments de información que deberían ayudar:

Cada count de Dropbox (DB) tiene un id de usuario (uid) asociado a él una vez que el usuario ha sido autorizado. En el model de su propia aplicación para una count, debe realizar un seguimiento del uid. Inicialmente, antes de que el usuario vincule su count DB, este uid será nil .

Cuando el usuario quiere acceder a su count DB, obtiene su uid asociado para la count. Si el uid no es nil, configure el DBRestClient siguiente manera:

 _client = [[DBRestClient alloc] initWithSession:[DBSession shanetworkingSession] userId:uid]; 

Si el uid aún no está configurado, debe presentar la pantalla de inicio de session.

 [[DBSession shanetworkingSession] linkFromController:someController]; 

Esto, por supuesto, inicia la aplicación DB para presentar el inicio de session (o presenta una interfaz web si la aplicación DB no está instalada). De cualquier manera, DB volverá a ejecutar su aplicación cuando el usuario termine el process de autorización.

En la aplicación del delegado de su application:openURL:sourceApplication:annotation: método que hace algo así:

 if ([[DBSession shanetworkingSession] handleOpenURL:url]) { NSString *query = url.query; if ([[url absoluteString] rangeOfString:@"cancel"].location == NSNotFound) { NSDictionary *urlData = [DBSession parseURLParams:query]; NSString *uid = [urlData objectForKey:@"uid"]; if ([[[DBSession shanetworkingSession] userIds] containsObject:uid]) { // At this point we know the login succeeded and we have the newly linked userid // make a call to process the uid } } else { // user cancelled the login } } 

En el código que procesa el uid recién vinculado, puede almacenar el uid en su propio model de datos de count. Luego usa el uid para crear el DBRestClient como lo DBRestClient anteriormente.

Si tiene un uid, puede determinar si el uid está correctamente vinculado con una simple comprobación:

 if ([[[DBSession shanetworkingSession] userIds] containsObject:uid]) { // the uid is linked } 

Para desvincular a un usuario en function de su uid, puede hacer lo siguiente:

 [[DBSession shanetworkingSession] unlinkUserId:uid]; 

En ese momento, también borraría el uid guardado de su propio model de count.

Con suerte, eso es suficiente para build el rompecabezas. Buena suerte.