Аутентификация Dropbox в iOS - PullRequest
3 голосов
/ 31 марта 2012

Я добавляю поддержку Dropbox в свое приложение iOS. Используя официальный API Dropbox и учебные пособия онлайн здесь Я дошел до того, что Dropbox должен пройти аутентификацию. Код ниже - это то, что дается Authenticate при нажатии кнопки:

//MainViewController.m
....
@implementation CryptoMainViewController
.....
#pragma mark - Dropbox
- (void)didPressLink {
    if (![[DBSession sharedSession] isLinked]) {
        [[DBSession sharedSession] link];
    }
}

Но независимо от того, как я изменяю код, куда я его помещаю или какую кнопку связываю, ничего не произойдет. Используя точки останова, я обнаружил, что метод на самом деле срабатывает. Я даже положил его в IBAction, но это дает тот же результат. Что я делаю неправильно? Как я могу заставить мое приложение аутентифицировать конечного пользователя?

И, после проверки подлинности, Как я могу сохранить строку NSS в Dropbox пользователя?

Если это совершенно неправильно, то где я могу найти ресурсы о том, как это сделать правильно?

Весь учебник, вся документация, API и т. Д. Доступны здесь .

Ответы [ 3 ]

5 голосов
/ 15 октября 2012

У меня была такая же проблема; причина в том, что я не установил общий сеанс Dropbox, например

DBSession* dbSession = [[[DBSession alloc] initWithAppKey: @"your_app_key"
                                           appSecret: @"your_app_secret"
                                           root: kDBRootAppFolder] autorelease];
[DBSession setSharedSession: dbSession];

Когда-то это называлось, ссылка работала нормально.

1 голос
/ 01 августа 2012

этот ответ может быть запоздалым, но я предполагаю, что вы уже связали свое приложение раньше и хотите сделать это снова. Единственный способ возобновить процесс связывания - это запустить следующий код: [[DBSession sharedSession] unlinkAll]; Вы можете разместить его в своем viewDidLoad. Когда вы затем вызываете didPressLink: приложение должно открыть приложение Dropbox (если оно доступно), Safari или окно приложения, запрашивающее ваше разрешение на доступ к вашему Dropbox. Если этого не произойдет, то проблема в другом. Надеюсь, это поможет

0 голосов
/ 31 марта 2012

Реализует ли ваш взгляд <DBLoginControllerDelegate>?

Если это так, ссылка Dropbox выглядит так:

DBLoginController* controller = [[DBLoginController new] autorelease];
        controller.delegate = self;
        [controller presentFromController:self];
...