그래서 저는 외부 API를 사용하는 Laravel 관리 애플리케이션을 개발 중입니다. 이를 PlatformAPI라고 부르겠습니다. 플랫폼이 작동하는 방식은 내 앱 사용자가 플랫폼에 계정을 가지고 있다는 것입니다. 내 Laravel 애플리케이션은 관리 대시보드 역할을 하므로 사용자는 PlatformAPI에서 얻은 일부 기본 보고서를 볼 수 있습니다.
내 앱의 모든 사용자는 플랫폼에서 생성할 수 있는 클라이언트 ID와 클라이언트 비밀번호를 추가해야 합니다. 이렇게 하면 내 애플리케이션이 사용자의 자격 증명을 사용하여 PlatformAPI에 대한 요청을 대신 수행할 수 있습니다.
저는 서비스에 대한 자격 증명/토큰을 설정하고 해당 서비스를 다음과 같이 ServiceProvider에 바인딩하는 방법을 기본적으로 설명하는 몇 가지 기사와 튜토리얼을 읽었습니다.
으아악이렇게 하면 PlatformApi를 사용할 때마다 클라이언트 자격 증명을 설정할 필요가 없습니다. 다음과 같이 서비스를 호출하면 됩니다.
으아악그러나 내 앱 사용자를 대신하여 PlatformApi가 제공하는 자격 증명을 사용하여 PlatformApi에 대한 요청을 수행해야 하기 때문에(그리고 내 앱의 데이터베이스에 저장) 이 동일한 접근 방식이 싱글톤에서도 작동할지 확신할 수 없습니다. 한 번만 인스턴스화됩니까?
또한 PlatformApi를 사용하려면 사용자 자격 증명을 사용하여 액세스 토큰을 받아야 합니다. 이 액세스 토큰도 어딘가(캐시)에 저장되어야 합니다.
이 문제를 어떻게 해결해야 할지 난감합니다. 어떤 조언이라도 대단히 감사하겠습니다.
P粉5236250802023-12-14 13:41:31
귀하의 모든 애플리케이션이 이 클라이언트 서비스를 사용할 것이라고 가정합니다. 그렇다면 싱글톤 디자인 패턴을 계속 사용할 수 있지만(추가 oauth 요청을 중지하기 위해) 공급자의 등록 메서드에서 논리를 분리해 보십시오. 통화에서 유효한 access_token
的私有方法后实例化 Client 类(如果存在有效令牌,则检查 DB
/ Cache
expires_in
时间戳值并返回它,或者向用户请求一个新的client
/secret
을 반환하고 반환할 수 있습니다)