OAuth 2.0 Authorization Code Flow with PKCE를 사용하여 엔드포인트에 연결하는 방법
엔드포인트에 연결하는 방법
사용자를 인증하려면 App이 승인 흐름을 구현해야 합니다. 이 승인 흐름을 사용하면 사용자를 X의 승인 대화 상자로 안내할 수 있습니다. 여기에서 기본 X 경험은 승인 대화 상자를 표시하고 App을 대신하여 승인을 처리합니다. 사용자는 App을 승인하거나 권한을 거부할 수 있습니다. 사용자가 선택한 후 X는 사용자를 App으로 리다이렉트하며, 여기서 authorization code를 액세스 토큰으로 교환하거나(사용자가 App을 승인한 경우) 거부를 처리할 수 있습니다(사용자가 App을 승인하지 않은 경우).Confidential client 작업
confidential client로 작업하는 경우, 토큰 엔드포인트에 요청할 때 base64 인코딩을 사용하여 authorization 헤더를 생성하기 위해 basic authentication 스키마를 사용해야 합니다.userid와 password는 자격 증명의 base64 인코딩된 문자열 내에서 단일 콜론(”:”) 문자로 구분됩니다.
예는 다음과 같습니다:
-header 'Authorization: Basic V1ROclFTMTRiVWhwTWw4M2FVNWFkVGQyTldNNk1UcGphUTotUm9LeDN4NThKQThTbTlKSXQyZm1BanEzcTVHWC1icVozdmpKeFNlR3NkbUd0WEViUA=='
user agent가 Client ID “Aladdin”과 비밀번호 “open sesame”을 보내고자 한다면 다음 헤더 필드를 사용합니다:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
basic authorization 헤더를 생성하려면 Developer Console 내부의 앱 “Keys and Tokens” 페이지에서 얻을 수 있는 Client ID와 Client Secret에 base64 인코딩이 필요합니다.
OAuth 2.0을 사용하여 연결하는 단계
1단계: Authorize URL 구성 App은 승인해야 하는 스코프를 나타내는 X에 대한 authorize URL을 구성해야 합니다. 예를 들어, App이 Tweet, 사용자를 조회하고 팔로우를 관리해야 하는 경우 다음 스코프를 요청해야 합니다:tweet.read%20users.read%20follows.read%20follows.write
URL에는 다른 필수 매개변수 외에도 code_challenge와 state 매개변수가 포함됩니다. 프로덕션에서는 code_challenge에 임의의 문자열을 사용해야 합니다.
2단계: GET oauth2/authorize
사용자가 인증하도록 하고 애플리케이션에 authorization code를 전송합니다. App에서 OAuth 2.0을 활성화한 경우 앱의 “Keys and Tokens” 페이지에서 Client ID를 찾을 수 있습니다.
사용자를 리다이렉트할 예시 URL은 다음과 같습니다:
offline.access 스코프가 요청된 경우에만). 다음 엔드포인트에 POST 요청을 할 수 있습니다:
application/x-www-form-urlencoded의 Content-Type을 전달해야 합니다. 또한, 요청에 code, grant_type, client_id 및 redirect_uri, 그리고 code_verifier가 있어야 합니다.
다음은 public client에 대한 예시 토큰 요청입니다:
application/x-www-form-urlencoded의 Content-Type을 추가해야 합니다. 또한 refresh_token을 전달하고 grant_type을 refresh_token으로 설정하며 client_id를 정의해야 합니다.
이 요청은 public client에서 작동합니다:
application/x-www-form-urlencoded의 Content-Type, 토큰 및 client_id를 전달해야 합니다.
경우에 따라 사용자가 App에 부여한 액세스를 취소하려는 경우 연결된 앱 페이지를 방문하여 액세스를 취소할 수 있습니다.