그래서 클라이언트 인 OAuth2 상황에서 호스트가 내 사이트로 보내는 인증 코드를 가져와야합니다. 호스트가 인증 코드를 다시 보내면 URL에서 코드를 제거한 다음 다시 보내어 토큰과 비밀을 검색하는 적절한 방법은 무엇입니까?Laravel의 OAuth2 토큰 가져 오기
htaccess에서 코드를 제거하고 아래 코드를 사용하여 환경 변수로 저장하려고했지만 환경 변수를 제대로 저장하지 못했습니다.
htaccess로
RewriteCond %{QUERY_STRING} ^code=(.*)$
RewriteRule^- [E=MY_AUTH:%1]
RewriteCond %{QUERY_STRING} ^code=(.*)$
RewriteRule ^(.*) https://www.example.com/cadWithAuth? [L]
라우터
Route::get('/cadWithAuth', '[email protected]')->name('files.cadWithAuth');
컨트롤러는 적절한 방법을 생각 어떤 다른 devs를 알고 싶다면 나는 기존의 도서관에서 찾고 권장
public function cadWithAuth()
{
$authCode = getenv('MY_AUTH');
$authID = getenv('OAUTH_CLIENT_ID');
$authSecret = getenv('OAUTH_CLIENT_SECRET');
$client = new Client(); //GuzzleHttp\Client
$result = $client->post('https://oauth.hostsite.com/oauth/token', [
'form_params' => [
'grant_type' => 'authorization_code',
'code' => $authCode,
'client id' => $authID,
'client_secret' => $authSecret
]
]);
return response()->json($result);
}
나는 감사의 말을 전합니다. 그러나 필자는 설명서와 설명을 받아 들일 수없는 것으로 생각합니다. PHP와 laravel에 대해 정상적인 것으로 느껴집니다. 내가 제대로 작동하도록 만들면, 그것은 나에게 블랙 박스 역할을 할 것이고, 나는 도대체 무슨 일이 벌어지고 있는지 진정으로 알 수 없다. –
나는 좋은 예를 들어 줄 것이다. guzzle readMe에는 사용자 이름과 암호를 요구하는 config 변수가 있습니다. 일반적으로 OAuth2에서는 사용자가 호스트의 로그인으로 라우팅되며 클라이언트는 해당 이름과 비밀번호를 볼 수 없습니다. 그래서, 왜 여기 있니? 사용자에게 호스트에 로그인하고, 인증 코드를 받고, 토큰을 얻는 등의 권한 부여 코드와 프로세스에 대한 설명도 없습니다. readMe는 마치 사용자가 토큰 만 필요로하는 것처럼 시작됩니다. –
나중에 readme에서 해당 개체를 사용하여 토큰을 검색하고 저장할 수 있음을 설명합니다. – Dymen1