2017-05-22 2 views
1

그래서 클라이언트 인 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); 
} 

답변

0

, 즉 물건을 구현합니다.

(정말 유용한 예제 및 패키지 acommunity) 토큰/코드를 캡처, 나는 그것이 원래라고 생각합니다. 나는 생각한다. (내 생각에) 기능을 함께 그룹화하고 가능한 한 매직을 제거하는 것이 더 쉽고 논리적이라고 생각한다.

그래서 환경 변수를 사용하지 않을 것입니다. 한 달 정도 지나면 그 변수를 어디에 설정했는지 쉽게 기억할 수 없기 때문입니다. 응용 프로그램의 모든 환경 변수에 액세스 할 수 있습니다.

이 동일한 인수는 내가 제공하는 해결책에 대해서도 적용됩니다. 이것은 마법 $ _GET [ "code"]를 사용하여 코드를 검색하는 것입니다.

TLDR; Oauth2 클라이언트를 사용할 필요가 없으면 바퀴를 재발 명하지 마십시오. (대부분은 문서화되어 있으며 자체 테스트를 \ o/쓰기 때문에 작성하지 않아도됩니다.)

+0

나는 감사의 말을 전합니다. 그러나 필자는 설명서와 설명을 받아 들일 수없는 것으로 생각합니다. PHP와 laravel에 대해 정상적인 것으로 느껴집니다. 내가 제대로 작동하도록 만들면, 그것은 나에게 블랙 박스 역할을 할 것이고, 나는 도대체 무슨 일이 벌어지고 있는지 진정으로 알 수 없다. –

+0

나는 좋은 예를 들어 줄 것이다. guzzle readMe에는 사용자 이름과 암호를 요구하는 config 변수가 있습니다. 일반적으로 OAuth2에서는 사용자가 호스트의 로그인으로 라우팅되며 클라이언트는 해당 이름과 비밀번호를 볼 수 없습니다. 그래서, 왜 여기 있니? 사용자에게 호스트에 로그인하고, 인증 코드를 받고, 토큰을 얻는 등의 권한 부여 코드와 프로세스에 대한 설명도 없습니다. readMe는 마치 사용자가 토큰 만 필요로하는 것처럼 시작됩니다. –

+0

나중에 readme에서 해당 개체를 사용하여 토큰을 검색하고 저장할 수 있음을 설명합니다. – Dymen1