2

Last.fm API と対話するアプリを作成しようとしていますが、行き詰まりました。私の問題は承認に関連しています。Last.fm API サイトからの引用:

アプリケーションは Web ブラウザーのインスタンスを開き、API キーと認証トークンをパラメーターとして使用してユーザーを last.fm/api/auth に送信する必要があります。HTTP GET 要求を使用します。

GET リクエストを送信する方法と、指定された URL でブラウザーを開く方法を知っています。しかし、この機能を実装して、ユーザーがブラウザで認証を承認または拒否したときにアプリ イベントをキャッチするにはどうすればよいでしょうか? HTTP GET を 15 秒間使用する必要があるかもしれません。ユーザー名を受信しない場合は、ユーザーに再度認証を実行するように依頼する必要があります。これは正しい方法ですか?

4

2 に答える 2

1

それはやや意地悪です。手順は単純に見えますが、これは実際には難しい問題であり、サービスと対話するための Last.fm 独自のliblastfm C++ ライブラリが解決策を提供するようにも見えません。

難易度の高い順にいくつかのアプローチは次のとおりです。

  • URL に対してデフォルトの Web ブラウザーを開き、ユーザーがアプリケーションを承認した後にクリックするボタンを表示します。

    長所: シンプル

    短所:ユーザーエクスペリエンスが悪い。ユーザーが混乱しないように、ユーザーが従うべき明確な指示があることを確認する必要があります。また、ユーザーは、ボタンを押すまでアプリがこれを認識していないことに気付かずに、「あなたのアプリは既に承認されている!」という理由でアプリが壊れていると考えるかもしれません。

  • URL に対してデフォルトの Web ブラウザーを開き、「Last.fm からの承認を待っています」というメッセージを無期限に表示し、 15 秒ごとにauth.getSessionメソッド API 呼び出しをポーリングして、ユーザーがアプリケーションを承認したかどうかを確認します。おそらく、「今すぐチェック」ボタンも提供します。

    長所: シンプルで、ユーザー エクスペリエンスも悪くありません。

    短所: API は、ユーザーが承認を拒否したことを知らせるエラー コードを提供していないようです。ユーザーがアプリを承認したかどうかわからない可能性があり、承認を永遠に待つ可能性があります。さらに、auth.getSession 呼び出しに制限があるかどうかはわかりませんが、レート制限の問題に直面する可能性があります。

  • アプリケーションに Web ブラウザーを組み込みます。それを完全に制御でき、イベント ハンドラーの設定は簡単です。

    長所: ユーザーがフォームを送信するとアプリケーションが通知を受け取るため、ポーリングは必要ありません。

    短所: 一部のユーザーにとっては、ユーザー インターフェイスがわかりにくい場合があります。

  • カスタム URI スキームをオペレーティング システムに登録し、Last.fm の指示に従って Web アプリケーションを承認します

    アイデアは、URI スキーム (アプリケーション プロトコルとも呼ばれます。例: myApp://) を登録し、カスタム スキーム (例: myApp://lastFmAuthorizationCallback) を使用してコールバック URL を指定することです。

    見る:

  • (プラットフォーム固有) Web ブラウザーを自動化します。これを行う正確な方法は、Web ブラウザーとプラットフォームによって異なります。

    長所: シームレスにできます。正しく行われた場合、優れたユーザー エクスペリエンスを提供する必要があります。

    短所: 開発が難しく、自動化はブラウザーのアップグレードで壊れる可能性があります。

于 2012-12-09T18:33:38.960 に答える
0

これは、ブラウザプロセスを起動するために使用しているAPIに部分的に依存します。起動されたプロセスが終了したときに検出できるAPIを使用している場合は、そのメカニズムを使用します。HTTPGETへの/auth呼び出しは、いかなる種類のユーザー名も受け取りません。デスクトップアプリの残りの認証ドキュメントによると、ユーザーが承認するとブラウザは自動的に閉じます。

ユーザーがアプリケーションにアカウントの使用を許可すると、ブラウザベースのプロセスが終了し、ユーザーはブラウザを閉じてアプリケーションに戻るように求められます。

この後、あなたが通過するためのいくつかのステップがあります。次に、セッションを取得するためにauth.getSessionを呼び出す必要があります。ユーザーがアプリをまだ承認していない場合、この呼び出しは失敗します(ユーザーに、アプリを承認してリンクを再度与える必要があるという失敗を表示できます)。リストされている可能性のあるエラーの種類は次のとおりです。

エラー

4:無効な認証トークンが提供されました

14:このトークンは承認されていません

15:このトークンの有効期限が切れています

4:認証に失敗しました-サービスにアクセスするための権限がありません

9:無効なセッションキー-再認証してください10:無効なAPIキー-許可する必要があります

等。

セッションが承認されたら、適切な電話をかけることができます

于 2012-12-07T00:17:29.363 に答える