ホームページ  >  に質問  >  本文

外部 API を使用するために Laravel のサービスプロバイダーを使用する方法 (ユーザーベースの認証情報を利用する)

そこで、私は外部 API を使用する Laravel 管理アプリケーションを開発しています。これを PlatformAPI と呼びます。プラットフォームの仕組みとしては、私のアプリのユーザーがプラットフォーム上にアカウントを持っているということです。私の Laravel アプリケーションは管理者ダッシュボードとして機能するため、ユーザーは PlatformAPI から取得したいくつかの基本レポートを表示できます。

アプリケーションのすべてのユーザーは、プラットフォームで作成できるクライアント ID とクライアント シークレットを追加する必要があります。このようにして、アプリケーションはユーザーの資格情報を使用して、アプリケーションに代わって PlatformAPI へのリクエストを実行できるようになります。

サービスの資格情報/トークンを設定し、そのサービスを次のように ServiceProvider にバインドする方法を基本的に説明する記事とチュートリアルをいくつか読みました。 リーリー

これにより、PlatformApi を使用するたびにクライアントの資格情報を設定する必要がなく、次のようにサービスを呼び出すだけで済みます:

リーリー

ただし、アプリのユーザーが提供する (そしてアプリのデータベースに保存する) 認証情報を使用して、アプリのユーザーに代わって PlatformApi へのリクエストを実行する必要があるため、これと同じアプローチが機能するかどうかはわかりません。シングルトンは一度だけインスタンス化されますか?

さらに、PlatformApi を使用するには、ユーザーの資格情報を使用してアクセス トークンを取得する必要があります。このアクセス トークンもどこか (おそらくキャッシュ内) に保存する必要があります。

この問題をどう解決すればいいのか少し迷っています。ご指摘をいただければ幸いです。

P粉465675962P粉465675962334日前442

全員に返信(1)返信します

  • P粉523625080

    P粉5236250802023-12-14 13:41:31

    すべてのアプリケーションがこのクライアント サービスを使用すると仮定します。その場合は、(さらなる oauth リクエストを停止するために) シングルトン設計パターンを引き続き使用できますが、プロバイダーの register メソッドからロジックを分離するようにしてください。有効な access_token を返すプライベート メソッドを呼び出した後、Client クラスをインスタンス化できます (有効なトークンが存在する場合は DB / Cache expires_in# を確認します # # タイムスタンプ値を返して返すか、ユーザーから新しい client/secret を要求してそれを返します) リーリー

    返事
    0
  • キャンセル返事