2

Xcodeで開発している目的のC iPad / iPhoneでドロップボックスの認証トークンを使用する方法を知っている人はいますか?? 私は多くのチュートリアルを検索しましたが、私が見つけた最も近いものはこれです:

http://code.google.com/p/oauthconsumer/wiki/UsingOAuthConsumer

しかし、それはmac用です。私がやりたいことは、サインイン用のサファリ ウィンドウを表示せずに、すべてのアプリ ユーザーを同じ Dropbox アカウント (私のもの) にリンクすることです。

何か案は??

4

1 に答える 1

3

これは可能ですが、推奨されません

警告: これにより、誰でもあなたのドロップボックス アカウント (または許可するアクセスに応じてアプリ フォルダー) への読み取り/書き込みアクセスが許可されます。

スタートガイドで推奨されているようにアプリを設定していると思います: https://www.dropbox.com/developers/core/authentication#ios

仕組みは次のとおりです。Dropbox にログインすると、アプリにリダイレクトされます。Dropbox は、URL スキームを登録し、次の AppDelegate メソッドを利用することでこれを行います。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;

Dropbox は、oauth_tokenoauth_token_secret、およびuidurlパラメーターで渡します。次に、次のメソッドを使用して API 呼び出しを行うときに後で使用できるように、これらを保存しますDBSession

- (BOOL)handleOpenURL:(NSURL *)url;

App Keyしたがって、同じとを使用するアプリを作成できますSecret

テストアプリ

DBSession* dbSession =
    [[[DBSession alloc]
      initWithAppKey:@"APP_KEY"
      appSecret:@"APP_SECRET"
      root:ACCESS_TYPE] // either kDBRootAppFolder or kDBRootDropbox
     autorelease];
[DBSession setSharedSession:dbSession];

承認をリクエストする

if (![[DBSession sharedSession] isLinked]) {
    [[DBSession sharedSession] linkFromController:yourRootController];
}

そして、AppDelegate メソッドを追加して承認を受け取りますurl

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    if ([[DBSession sharedSession] handleOpenURL:url]) {
        if ([[DBSession sharedSession] isLinked]) {
            NSLog(@"App linked successfully! url: %@", url);
            // At this point you can start making API calls
        }
        return YES;
    }
    // Add whatever other url handling code your app requires here
    return NO;
}

urlこれにより、認証トークンを使用してログに記録されます。それをコピーしてから、本番アプリで (DBSession を構成した直後に) これを実行します (文字列を以前にコピーしたものに置き換えます)。

プロダクションアプリ

DBSession* dbSession =
    [[[DBSession alloc]
      initWithAppKey:@"APP_KEY"
      appSecret:@"APP_SECRET"
      root:ACCESS_TYPE] // either kDBRootAppFolder or kDBRootDropbox
     autorelease];
[DBSession setSharedSession:dbSession];

if (![[DBSession sharedSession] isLinked]) {
    [[DBSession sharedSession] handleOpenURL:[NSURL URLWithString:@"db-APP_KEY://1/connect?oauth_token=********&oauth_token_secret=********&uid=********"]];
}

DBSessionこれにより、 がDropbox アカウントに自動的にリンクされます。

承認する直前にこれを呼び出すことで、これをテストできます。

[[DBSession sharedSession] unlinkAll];

別の警告 アプリをダウンロードし、認証トークンを抽出してから、必要なすべての読み取り/書き込み API 呼び出しを開始できます。これは完全に安全ではなく、教育的な演習としてのみ考慮されるべきです。

于 2013-03-22T11:49:32.557 に答える