3

Deezer Apiを使用する Winforms アプリケーションの作成を開始しています。

今のところ、私は彼らのOAuth 認証プロセスに行き詰まっています。

Deezer の OAuth 認証プロセスは、ユーザーを認証および承認するために、サーバー側フローとクライアント側フローの 2 つの異なるフローを受け入れます。

  • サーバー側フローは Web アプリケーションで使用されます
  • クライアント側フローは、javascript およびモバイル アプリケーションのブラウザー クライアント アプリケーションで使用されます。

私は(おそらく間違って)クライアント側のフローを使用して、Winforms アプリケーションで認証されたユーザーを取得できると想定しました。

次に、WebBrowser コントロールで Deezer ログイン Web ページを起動するフォームを作成し、後で応答を解析してアクセス トークンを取得できると考えました。response_type=token通常、ログインページの URL にパラメーターを追加すると、ページで許可されます。

残念ながら、redirect_uriパラメーターも指定する必要があります。ただし、私のシナリオには当てはまらないため、Web サイトを使用する予定はありません。

どうやら、これをだます方法はなく、ログイン ページには、それが見つからないというエラー メッセージが表示され、認証プロセスの開始が拒否されます。

Winform アプリケーションに対して API を使用する方法について Deezer に質問する前に、誰かが既にこれに遭遇したかどうか、そして彼がどうやってそれを解決したかを知りたいです。

私は OAuth を初めて使用するので、何か不足しているのか、それとも Deezer API が私のシナリオに適用できないのか疑問に思っています。

4

2 に答える 2

2

あなたの問題の回避策を見つけようとしました。これは私が持っているものです:

  1. Web ブラウザー コントロールを使用して、OAuth 接続 URI に移動します。
  2. 制御するドメイン/サブドメインをリダイレクト URI として使用します。背後に実際の Web サービスは必要ありません。例えばhttp://deezerauth.maneu.net
  3. NavigatingWebBrowser コントロールのイベントにイベント ハンドラーを追加します。

このイベント ハンドラーで、次のコードのようなことを行います。

if(e.Uri.AbsoluteUri.Contains("http://deezerauth.maneu.net"))
{
    e.Cancel = true;
    MessageBox.Show("Welcome on Deezer.");
}

免責事項 : 私は API チームではなく、Deezer モバイル チームで働いています。より良い解決策があるかどうかを確認するために、この質問を彼らに転送しました。

于 2012-12-13T17:24:17.473 に答える
1

私は最終的に redirect_uri のハックを見つけました:

「http://blank.org」が動いています!この状態で、アプリケーションのドメイン名として「blank.org」を適切な Deezer MyApp 画面に入力しました。

https://connect.deezer.com/fr/oauth/auth.php?
      app_id=******&redirect_uri=http://blank.org&perms=basic_access
      &response_type=token

次に、アクセス トークンが URL に表示されます。WebBrowser コントロールから取得するだけです。

よりエレガントなものを見つける前に、これを一時的な解決策として取り上げます。

編集: http://blank.orgは忘れてください!

私たちが所有していないサイトをダミーのドメイン名にするのは非常に悪い考えのようです. サイトが実際に存在する場合、access_token を含むリダイレクトされた URL が Web サーバーによってログに記録されますが、これは非常に悪いことです。最善の方法は、存在しないダミーのドメイン名を定義し、その前に http:// をredirect_uriパラメータに追加することです。「サイトが見つかりません」というメッセージが表示されますが、少なくとも access_token は取得できます。

于 2012-11-30T19:32:08.103 に答える