3

私は現在、Soundcloud を Oauth サービス プロバイダーとしても使用する Oauth コンシューマー サービスを実装しています。しかし、私は次の問題を抱えています: Facebook や Twitter の例を挙げると、そこに行き、サインインし、許可フォームに記入すると、アプリにリダイレクトされます。2 回目にアクセスした場合、既にサインインしている場合は、基本的にすべての手順をスキップして、すぐにリダイレクトされます。つまり、Facebook は、あなたがそのサードパーティ サービスに既に許可を与えていることを認識したので、常に許可を求めるわけではありません。

それが、Soundcloud を使用しているときに起こっていることです。基本的に、ユーザーをSoundcloud Oauth接続エンドポイントにリダイレクトするたびに、以前にそのサードパーティサービスに許可を与えていても、許可フォームが常に表示されます. 私は毎回「接続」を押さなければならず、これはユーザーの観点からはドラッグです (同じエンティティに何回アクセス許可を与えることができますか)。私の質問は: ユーザー アカウントからその特定のサード パーティ サービスへの以前のアクセス許可を soundcloud に認識/検証させるために使用できるパラメーターはありますか? それとも、これは Soundcloud Oauth 設計の実装であり、それを受け入れなければならないのでしょうか?

編集:

よくわからないかもしれませんが、soundcloud で「接続」を押すたびに、新しいアクセス トークンが生成されて配信されます。私のアプリはこのアクセス トークンを使用してユーザーを識別するため、ログインするたびにアクセス トークンが更新され、毎回効果的に "サインアップ" することはうまくいきません。要約すると、以前に関連付けられたトークンを自分のアカウントに取得して、データベースを検索し、それを特定してログインできるようにしたいと考えています。

また、クリーンアップされる可能性のある状態をクライアントに保存する必要のないソリューションも探しています。

4

1 に答える 1

2

できることは、ユーザーの oauth トークンをローカル ストレージに保存し、将来のセッションで再利用することです。それがsoundcloud.comで起こっていることです。

より長い説明:

Connect フローを使用すると、ユーザーは SoundCloud によって (ユーザー名/パスワード、Facebook Connect、または soundcloud.com の既存のセッションを使用して) 認証され、成功するとアプリに oauth トークンが与えられます。そのユーザーのために。これは、アプリに登録されているコールバック ページに渡されます。

そのトークンは、ユーザーを「ログイン」させるために必要な唯一の情報です。トークンの有効期限が切れない限り (時間が経過するか、ユーザーが手動で取り消すことによって)、将来のセッションでそれを再利用できます。

あなたのアプリケーションの設計について少し混乱していると思います.oauthトークンはどこでどのように使用されていますか? トークンを識別子として使用する代わりに、おそらくユーザーのパーマリンクの方が良いのではないでしょうか? oauth トークンを持っている場合は、クエリを実行してパーマリンクを見つけることができますapi.soundcloud.com/me

于 2013-01-27T13:35:36.667 に答える