2013-11-26 55 views
3

當我使用的核心API,我只是使用的代碼Dropbox的同步API的accessToken

[dbsession updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."]; 

從應用程序的任何副本訪問我的Dropbox帳戶。但是現在我發現這個新的Sync API更簡單,更靈活,但是我沒有發現上面顯示的代碼的任何等價物。現在是:

DBAccountManager* accountMgr = [[DBAccountManager alloc] initWithAppKey:@"..." secret:@"..."]; 
[DBAccountManager setSharedManager:accountMgr]; 

??[DBAccountManager updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];?? 

如何訪問我的帳戶?我在哪裏可以插入AccessToken?

+0

爲了澄清,無論應用安裝在哪裏,您都希望始終登錄到同一個Dropbox帳戶?並通過傳遞保管箱登錄過程? – djshiow

回答

3

從你的問題,似乎在DBAccountManager這個方法是一個使用您的appKeysecret

- (id)initWithAppKey:(NSString *)key secret:(NSString *)secret 

從文檔的描述,它說,這種方法」 ......創建[S]一個新的客戶經理與您的應用程序的應用程序密鑰和祕密。您可以註冊您的應用程序或在應用程序頁面找到您的密鑰。「

您創建的DBAccountManager一個實例,並將其設置爲使用[DBAccountManager setSharedManager:]共享管理器後,可以通過調用此方法登錄特定用戶:

[[DBAccountManager sharedManager] linkFromController:YOUR_ROOT_CONTROLLER]; 

下面是來自dropbox iOS tutorial說明:

「要開始與Sync API交互,您需要創建一個DBAccountManager對象。該對象允許您鏈接到Dropbox用戶的帳戶,該帳戶是第一步工作代表他們的數據「

」...鏈接過程將切換到Dropbox移動應用程序,如果它安裝。用戶完成授權步驟後,Dropbox會使用您在設置SDK時註冊的URL方案將其重定向回您的應用。您的應用需要處理這些請求,以完成身份驗證流程「

在本教程中提到的最後一步是處理重定向下面是一些代碼來做到這一點:。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url sourceApplication:(NSString *)source annotation:(id)annotation { 
    DBAccount *account = [[DBAccountManager sharedManager] handleOpenURL:url]; 
    if (account) { 
     NSLog(@"App linked successfully!"); 
     return YES; 
    } 
} 

的現在可以通過[DBAccountManager sharedManager].linkedAccount獲得用戶的賬戶信息,其是DBAccount與像userIdaccountInfo性質。

下面是參考一個link to the docs。希望這ħ ELPS!

更新

看來我可能誤解了你的問題。我向您提供了關於如何使用Sync API的說明,但並未完全澄清在API中實際存在沒有位置的用戶accessToken。這已被我上面描述的Web流程取代。

+0

顧名思義,appKey是應用程序的訪問令牌。問題'updateAccessToken:accessTokenSecret:forUserId:'中的方法簽名正在查找_user_訪問令牌。他們不一樣。 – neilco

+0

你誤解了這個問題。 @Alessandro希望能夠使用同步API _without_使用Web流身份驗證_programmatically_設置他的帳戶。 – neilco

+0

如果我誤解了他的話,那麼答案是**如果我沒有遺漏文檔中的某些內容,那麼您不能使用Sync API和'accessToken'。**我以爲他在問他如何切換到同步API,並想知道他如何訪問他的賬戶,仍然認爲他需要將'accessToken'放入Dropbox方法中。 –

0

您可以通過生成dropbox在同步API中使用的回調url來實現您想要的效果。首先,您需要設置dropbox.sync.nonce用戶設置,以匹配您傳入的NSURL中的狀態參數。然後將oauth_token,oauth_token_secret和uid參數設置爲您用來傳入[DBAccountManager updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];的內容。如下所示:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:@"9b0aa24b0bd50ce3a1a904db9d309c50" 
        forKey:@"dropbox.sync.nonce"]; 
    [userDefaults synchronize]; 

    NSURL *url = 
     [NSURL URLWithString:@"db-APP_KEY://1/connect? 
oauth_token=updateAccessToken& 
oauth_token_secret=accessTokenSecret& 
uid=forUserId& 
state=9b0aa24b0bd50ce3a1a904db9d309c50"];  

    [[UIApplication sharedApplication] openURL:url]; 

請注意狀態參數與用戶默認值中存儲的值相同。請記住,這是沒有記錄的,可能會在更新的API版本中更改。

+0

它仍然在工作?我做了同樣的事情,但它給了我錯誤'[錯誤]無法驗證鏈接請求' –