そこで、私は外部 API を使用する Laravel 管理アプリケーションを開発しています。これを PlatformAPI と呼びます。プラットフォームの仕組みとしては、私のアプリのユーザーがプラットフォーム上にアカウントを持っているということです。私の Laravel アプリケーションは管理者ダッシュボードとして機能するため、ユーザーは PlatformAPI から取得したいくつかの基本レポートを表示できます。
アプリケーションのすべてのユーザーは、プラットフォームで作成できるクライアント ID とクライアント シークレットを追加する必要があります。このようにして、アプリケーションはユーザーの資格情報を使用して、アプリケーションに代わって PlatformAPI へのリクエストを実行できるようになります。
サービスの資格情報/トークンを設定し、そのサービスを次のように ServiceProvider にバインドする方法を基本的に説明する記事とチュートリアルをいくつか読みました。 リーリー
これにより、PlatformApi を使用するたびにクライアントの資格情報を設定する必要がなく、次のようにサービスを呼び出すだけで済みます:リーリー
ただし、アプリのユーザーが提供する (そしてアプリのデータベースに保存する) 認証情報を使用して、アプリのユーザーに代わって PlatformApi へのリクエストを実行する必要があるため、これと同じアプローチが機能するかどうかはわかりません。シングルトンは一度だけインスタンス化されますか?さらに、PlatformApi を使用するには、ユーザーの資格情報を使用してアクセス トークンを取得する必要があります。このアクセス トークンもどこか (おそらくキャッシュ内) に保存する必要があります。
この問題をどう解決すればいいのか少し迷っています。ご指摘をいただければ幸いです。
すべてのアプリケーションがこのクライアント サービスを使用すると仮定します。その場合は、(さらなる oauth リクエストを停止するために) シングルトン設計パターンを引き続き使用できますが、プロバイダーの register メソッドからロジックを分離するようにしてください。有効な
access_token
を返すプライベート メソッドを呼び出した後、Client クラスをインスタンス化できます (有効なトークンが存在する場合はDB
/Cache
expires_in# を確認します # # タイムスタンプ値を返して返すか、ユーザーから新しい
client/
secretを要求してそれを返します)
リーリー