2012-03-31 38 views
3

我將Dropbox支持添加到我的iOS應用程序。使用官方的Dropbox API和教程online here我已經到了Dropbox需要認證的地步。下面的代碼是什麼給予​​驗證,當按下按鈕:在iOS中驗證Dropbox

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

但不管我怎麼更改代碼,在那裏我把它還是什麼按鈕,我將其鏈接到,什麼都不會發生。使用斷點我發現該方法事實上被觸發。我甚至把它放在IBAction中,但是這給出了相同的結果。我究竟做錯了什麼? 如何讓我的應用程序對最終用戶進行身份驗證?

而且,一旦驗證,如何將NSString保存到用戶的Dropbox?

如果這是完全錯誤的,那麼我可以去哪裏尋找資源,如何正確地做到這一點?

整個教程,所有文檔,api等都可用here

+0

如果你在這個方法的開始放置一個斷點,它會被觸發嗎? – 2012-04-04 01:56:38

+0

@quixoto是的,它確實通過斷點觸發 – 2012-04-04 01:59:22

+1

檢查您是否在info.plist中提供了應用程序密鑰? 您的應用程序密鑰也需要Info.plist文件,所以應用程序可以註冊正確的url方案 – Bala 2012-04-04 10:47:35

回答

5

我有同樣的問題;原因是我沒有設置共享的Dropbox會話,例如

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

一旦被調用的鏈接工作得很好。

0

您的看法是否實施了<DBLoginControllerDelegate>

如果是這樣,Dropbox的鏈接像這樣:

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

嗯....你確定是正確的,因爲即使所有正確的頭導入我仍然得到錯誤:「無法找到協議聲明」 – 2012-03-31 15:37:12

+0

我相信他指的是'DBRestClientDelegate'協議。另外,你在哪裏調用didPressLink方法?您可能需要向我們提供更多代碼。 – serb 2012-03-31 17:00:59

+0

我確定,因爲我爲我們的應用程序Securis做了這個。 – 2012-04-01 03:04:33

1

這個答案可能會遲到,但即時通訊猜你之前已經聯繫您的應用程序,並希望再次這樣做。如果您運行以下代碼,則可以讓鏈接進程再次發生的唯一方法是: [[DBSession sharedSession] unlinkAll]; 你可以把它放在你的viewDidLoad中。然後,當您打電話給didPressLink時:應用程序應打開Dropbox應用程序(如果可用),Safari或應用程序窗口要求您獲得訪問Dropbox的權限。如果這沒有發生,那麼問題就在別的地方。希望這可以幫助