2016-12-22 8 views
1

Qtを使用してDropbox上のファイルへのアクセスを実現しようとしました。私はオフにアプリを作成しています。サイト、ディレクトリが作成されました。しかし、私はアプリでそこに認証することができませんでした。 私はこれらのテストリクエストを作成しました。Qt5を使用したDropboxでの認証のためのHttpリクエスト

QNetworkRequest request(QUrl("https://api.dropbox.com/1/metadata/link/")); 
request.setRawHeader("Authorization", "Basic " + QString("keyApp:AppSecret").toLatin1().toBase64()); 
replyer = manager->post(request, "link=https://www.dropbox.com/sh/<DIR URL>?dl=0"); 

"link ="私は何を入れる必要がありますか?私はどこのリンクを見つけることができますか?私はsharelinkを追加してサイトからのリンクを作成するだけでこのリンクを得ることができます、私はそれがそのように動作するとは思わない。しかし、たとえこのリンクを私はまだ\

でエラーが発生します。 "ACCESS_DENIED:unsupported_app_type \"}」

はまた、私はどこに私ができるものを要求

QNetworkRequest request(QUrl("https://api.dropboxapi.com/2/auth/token/from_oauth1")); 
request.setRawHeader("Content-Type", "application/json"); 
request.setRawHeader("Authorization", "Bearer тут accesTokenFromSite"); 
replyer = manager->post(request, "{\"oauth1_token\": \"whereFindThoseParam?\",\"oauth1_token_secret\": \""}"); 

を作るためにしようと試みてきました最後の2つのパラメータを見つけますか?デフォルト値のリクエストでエラーが発生しました

"API関数の呼び出しでエラーが発生しました\" a UTH /トークン/ from_oauth1 \ ":無効 HTTPヘッダ\" 認可\ ":\期待" 基本\ "認証"

また、私は

QUrl url("https://api.dropbox.com/1/oauth2/token"); 
url.setUserName("KEY"); 
url.setPassword("SECRET"); 
QNetworkRequest request(url); 
request.setRawHeader("Content-Type", "application/json"); 
QHttpMultiPart *mpart = new QHttpMultiPart(this); 
QHttpPart part1; 
part1.setBody("grant_type=authorization_code"); 
mpart->append(part1); 
QHttpPart part2; 
part2.setBody("code=CODE"); 
mpart->append(part2); 
replyer = manager->post(request, mpart); 

をどうしようとしている。しかし、まだエラーを取得:

"{\" としましたerror_descriptionの\ ":\" 所与 要求\ために利用可能な認証機能 "\ "エラー\":\ "INVALID_REQUEST \"}"

+0

まだ回答が得られていない場合は、https://github.com/osoftteam/dropboxQtをご覧ください。 –

+0

さまざまなことをするさまざまなAPIコールを作成しようとしているようです。あなたの実際の目標は何ですか? – Greg

答えて

0

まず、Dropbox Platformに新しいアプリを作成して、開発するアプリで使用する認証情報(アプリキーとアプリの秘密)を取得する必要があります。あなたは次のページでそれを行うことができます:Create a new app on the Dropbox Platform

Dropbox for HTTP Developersを読んでください。ドロップダウンであなたのアプリ(Dropboxで作成したアプリ)を選択してアクセストークンを入力すれば、curlでテストする既成の例が得られます。

http APIの知識があれば、Qtでの実装を開始できます。 QtDropboxのプロジェクトソースを調べる(そしてテストクライアントをビルドして実行する)ことは良い考えです。現在、QtDropboxはAPI v1のみをサポートしています。 hereからAPI v1 - > v2移行ガイドを見つけることができます。 APIは、承認フローを経由せずに自分のアカウントのためのを呼び出しを行うことができるようにアクセストークンを生成する手順下記参照、前方に取得するには

UPDATE

。他のユーザ用のアクセストークンを取得するには、標準のOAuthフローを実装する必要があります。 操作のすべての種類

  • クリック
  • Generated access token下の生成を行うことができるようにする

    ゴーapps page

    • 上のアプリを設定Permission type全Dropboxのには、あなたの トークンをコピーします。例えば2ON ** _ M7cJ *** Qe3gmtQJK

    のは、Dropboxのアカウントのフォルダ構造のルートにmiscのという名前のフォルダがあると仮定しましょう。カールを使用して

    フォルダの内容の一覧表示:

    curl -X POST https://api.dropboxapi.com/2/files/list_folder \ 
        --header 'Authorization: Bearer 2on**_M7cJ***Qe3gmtQJK' \ 
        --header 'Content-Type: application/json' \ 
        --data '{"path":"/misc"}' 
    

    あなたは、フォルダの内容のJSONオブジェクトが返されます。

    ドキュメントに記載されているとおり、Dropbox API explorerは、API呼び出しを開始する最も簡単な方法です。 (それはあなたの目的の場合)他人のDropboxのアカウントにアプリへのアクセスを取得する方法を前方に取得するには

    開くには、次のページで、あなたのアプリからブラウザには:

    https://www.dropbox.com/oauth2/authorize?client_id=<your app key>&response_type=code 
    

    あなたはどのできるトークンを取得しますアプリキーと秘密と共にhttps://api.dropboxapi.com/oauth2/tokenの呼び出しで使用することができます。

    希望すると、これはあなたが前進するのに役立ちます。

    +0

    ドキュメントを読む? Thx、キャプテン。私はすでにそれを読んでいて、Qtを使わずに簡単なカールを使って試してみました。プロジェクトが作成されました。私がそこに見たすべてのデータを使用しました。しかし、まだQtとカール(同じ)でエラーを取得します。 – Roseguard

    +0

    私の答えの中核は最初の段落にありました。あなたはそれをやりましたか?そして文書化してトークンを取り込み、デフォルト値ではなく正しいトークンで試しましたか? – talamaki

    +0

    私は既に鍵のアプリと秘密を手に入れています。私のパスワード、ログイン、その他の鍵のように、ここにリクエストを入れないでください – Roseguard

    関連する問題