헤드리스 ID API: 비공개 클라이언트의 헤드리스 등록 플로
클라이언트-서버 아키텍처 등 기밀 정보를 보관할 수 있는 앱의 경우 헤드리스 등록 플로를 사용하여 고객 및 파트너의 헤드리스 등록을 설정할 수 있습니다. 헤드리스 등록 플로를 OAuth 2.0 인가 코드 부여 유형을 기반으로 구축된 인가 코드 및 자격 증명 플로를 확장합니다. 이 플로를 사용하면 타사 앱에서 프런트 엔드 사용자 등록 환경을 제어할 수 있습니다. Experience Cloud 사이트를 통해 Salesforce 헤드리스 등록 API를 호출하여 사용자를 만들고 로그인한 다음, Salesforce 리소스에 대한 액세스 권한을 부여합니다. 두 프로세스를 분리하면 사용자가 앱에 머문 상태에서 앱에 등록하고 Salesforce 데이터에 액세스할 수 있습니다.
필수 Edition
| 지원 제품: Salesforce Classic(일부 조직에서 사용할 수 없음) 및 Lightning Experience 모두 |
| 지원 제품: Enterprise, Unlimited 및 Developer Edition |
다음은 헤드리스 등록 플로에 대한 사용 사례의 예입니다. Salesforce에서 고객 정보를 관리하는 여행사에 근무하는 사용자의 예를 들어보겠습니다. 사용자는 앱에서 사용자 환경 전체를 관리해야 하며, 고객의 앱 등록을 이끌어 더 많은 고객을 확보하고 싶을 수도 있습니다(ID 서비스 필요). 회사에서 이미 Salesforce를 사용하므로 헤드리스 ID를 사용하십시오. 일반 클라이언트-서버 앱을 구축하고 헤드리스 등록 플로를 구성합니다. 신규 사용자가 앱에 등록하면 사용자 정의된 등록 환경을 통해 환영 인사가 전달됩니다. 사용자 등록을 마친 후 Salesforce와 직접적인 상호 작용 없이 ID를 확인하고 Salesforce 데이터에 액세스합니다.
플로 도중 최종 사용자에게 전송되는 일회용 암호(OTP) 이메일에 대한 이메일 템플릿 옵션을 확장하려면 이메일 템플릿 허용 목록에 수신을 동의하고 사용자 정의 템플릿으로 허용 목록을 만듭니다. 헤드리스 플로에 여러 이메일 템플릿 사용을 참조하십시오.
이 플로를 설정하기 전에 연결된 앱 또는 외부 클라이언트 앱에서 필요한 설정 및 액세스 정책을 구성하십시오. 참조 인증 코드 및 자격 증명 플로에 대한 연결된 앱 구성 또는 인증 코드 및 자격 증명 플로에 대한 외부 클라이언트 앱 구성
다음은 흐름의 개요입니다.
- 사용자가 앱을 열고 등록을 클릭합니다. (1)
- 앱에 사용자 데이터를 수집하기 위한 등록 양식이 기본적으로 표시됩니다. 이 양식을 디자인하고 수집하려는 정보를 사용자 정의합니다. (2)
- 사용자가 앱에 정보를 입력합니다. 예를 들어 새 사용자 이름, 암호, 이름(성 없이)을 입력합니다. (3)
- 앱이 Experience Cloud 사이트의 헤드리스 등록 API /services/auth/headless/init/registration 끝점에 사용자 정보를 전송합니다. (4)
- Salesforce가 사용자 정보를 수신하고 나중에 처리하기 위해 대기열에 지정합니다. Salesforce가 앱에 등록 요청 ID가 포함된 성공 메시지를 반환합니다. (5a)
- 그런 다음, Salesforce가 사용자에게 일회용 암호(OTP)가 포함된 이메일 또는 SMS 텍스트 메시지를 보냅니다. (5b)
- 앱에 OTP 확인 양식이 기본적으로 표시됩니다. 이 양식의 모양을 선택합니다. (6)
- 사용자가 OTP를 수신하고 확인 양식에 입력합니다. (7)
- 그런 다음, 앱이 헤드리스 로그인 API에 대한 인가 코드 요청을 통해 인가 코드 및 자격 증명 플로에 착수합니다. 요청에는 OTP 및 요청 ID와 함께 기타 매개 변수가 포함됩니다. (8)
- Salesforce가 요청 ID 및 OTP를 확인합니다. 앞서 저장된 대기열 지정 사용자 데이터를 검색하고 헤드리스 등록 처리기를 호출합니다. 헤드리스 등록 처리기는 Salesforce에서 사용자를 만듭니다. (9)
- Salesforce가 302 리디렉션을 인가 코드가 포함된 사전 구성된 URL로 반환합니다. 302 리디렉션은 브라우저 내에서 처리되며, 응답은 서버의 사전 구성된 콜백 처리기에 헤드리스 상태로 전달됩니다. (10)
- 서버측 콜백 처리기는 302 리디렉션에서 코드 및 기타 매개 변수를 추출합니다. 그런 다음, 토큰 끝점에 대한 POST 요청을 통해 코드 교환을 시작합니다. (11)
- 토큰 끝점에서 Salesforce는 서버측 콜백 처리기에 액세스 토큰 응답을 반환합니다. (12)
- 서버측 콜백 처리기는 토큰 응답을 처리하고 앱에 로그인 상태를 반환합니다. 이 응답에는 앱 디자인 및 보안 조치에 따라 세션 세부 사항, 사용자 정보, 잠재적으로 액세스 토큰이 포함될 수 있습니다. (13)
- 브라우저에서 로그인된 응답을 수신하고 사용자 세션을 만듭니다. (14)
- 이제 사용자가 로그인하여 사용자 정의 앱에서 Salesforce 데이터에 대한 요청을 시작하는 작업을 수행합니다. 예를 들어 Salesforce Experience Cloud 사이트에 저장되는 여행 예약 내역에 액세스하기 위해 버튼을 클릭합니다. (15)
- 사용자 정의 앱이 Salesforce API를 비롯해 보호된 Salesforce 끝점에 인증 요청을 합니다. (16)
- 이제 고객이 사용자 정의 앱에서 보호된 데이터에 액세스할 수 있습니다. 예를 들어 사용자는 자신의 여행 예약 내역을 볼 수 있습니다. (17)
사용자의 타사 앱 열기 및 등록 클릭
사용자가 앱을 열고 등록 링크를 클릭하거나 링크를 클릭하여 등록이 필요한 자원에 액세스합니다.
앱의 등록 양식 표시
앱에 사용자 데이터를 수집하기 위한 등록 양식이 기본적으로 표시됩니다. 모양, 느낌, 수집할 사용자 정보 등 이 양식의 모든 사항을 제어합니다.
사용자에게 수집하려는 정보에 대해 몇 가지 사항을 고려해야 합니다. 앱이 헤드리스 등록 API에 사용자 정보를 제출하면 Salesforce에서 이메일 주소, 사용자 이름, 성(姓), 암호를 확인합니다. 사용자에게 이 정보를 수집하거나 자동으로 생성할 수 있으며, POST 요청에 포함시켜야 합니다. 포함할 정보를 결정할 때 사용자가 ID를 확인할 수 있도록 이메일 주소 또는 전화 번호를 수집해야 합니다.
사용자의 정보 입력
앱에서 사용자가 등록 양식에 정보를 입력합니다.
앱에서 헤드리스 등록 API에 사용자 정보를 헤드리스 상태로 전송
브라우저에서 앱이 AJAX(Asynchronous Java and XML)를 사용하여 Experience Cloud 사이트에서 헤드리스 등록 끝점(/services/auth/headless/init/registration)에 POST 요청을 보냅니다.
등록 요청에 다음 머리글을 포함하십시오.
| 머리글 | 필수? | 설명 |
|---|---|---|
Authorization: Bearer
|
Experience Cloud 로그인 및 등록 페이지에서 이 API에 액세스하기 위한 인증 필요를 활성화한 경우 이 머리글이 필요합니다. 비공개 클라이언트에 대해 항상 이 설정을 활성화하는 것이 좋습니다. | 내부 통합 사용자에게 발행된 액세스 토큰을 포함합니다. 액세스 토큰을 가져오려면 Salesforce에서 지원하는 표준 OAuth 플로를 사용할 수 있습니다. 연결된 앱 또는 외부 클라이언트 앱에 user_registration_api 범위를 할당하거나 플로 중에 매개 변수로 전달해야 합니다. |
Content-Type
|
아니요. Postman을 사용하여 플로를 구축하고 테스트하는 경우 다음 머리글이 추가될 수 있습니다. 숨겨진 머리글을 확인하여 올바른지 확인합니다. | 요청의 형식을 지정합니다(예: application/json). |
요청 본문에 다음 매개 변수를 포함하십시오.
| 매개 변수 | 필수? | 설명 |
|---|---|---|
password
|
예. | 사용자의 암호. 암호는 프로필 또는 조직에 대해 구성된 모든 암호 정책이 적용됩니다. |
userdata
|
예. 사용자에게서 이 정보를 수집하지 않았더라도 자동으로 생성하고 userdata 매개 변수에 전달해야 합니다. |
모든 필수 사용자 정보를 포함합니다. 최소한 Salesforce는
|
recaptcha
|
다음 조건이 적용되는 경우 필수입니다.
|
사용자가 reCAPTCHA 확인을 완료할 때 Google reCAPTCHA API에서 발행되는 암호화된 토큰입니다. |
recaptchaevent
|
다음 조건이 적용되는 경우 필수입니다.
|
다음 하위 매개 변수를 포함하는 JSON 개체입니다.
자세한 내용은 Google reCAPTCHA 문서를 참조하십시오. |
verificationmethod
|
아니요. 이 매개 변수가 포함되지 않을 경우 Salesforce에서 기본적으로 이메일을 통해 사용자의 ID를 확인합니다. 이 매개 변수를 포함할 경우 인가 엔드포인트에 대한 요청에 |
사용자의 ID 확인을 위해 사용되는 방법입니다. Salesforce는 확인 메서드에 대해 email 및 sms라는 두 가지 값을 지원합니다. |
customdata
|
아니요. | 수집하는 모든 사용자 정의 사용자 정보를 포함합니다. 예를 들어 사용자의 상세 주소를 포함할 수 있습니다. |
emailtemplate
|
이메일 템플릿 허용 목록이 활성화된 경우 여러 이메일 템플릿을 지정하려면 필요합니다. 이메일 템플릿 허용 목록을 활성화하지 않은 경우 이 매개 변수를 포함할 수 없습니다. 이 매개 변수를 포함하지 않을 경우 Salesforce는 허용 목록이 활성화되어 있는지 여부에 상관없이 Experience Cloud 설정에 구성된 기본 이메일 템플릿을 사용합니다. 템플릿이 구성되지 않은 경우 Salesforce는 기본 OTP 이메일 템플릿을 사용합니다. |
사용자 정의 이메일 템플릿 개발자 이름입니다. 이 매개 변수에는 허용 목록의 이메일 템플릿만 포함할 수 있습니다. |
예제 POST 요청은 다음과 같습니다. 이 예에서 Experience Cloud 설정에서 인증 및 reCAPTCHA 모두 필수 항목으로 구성되어 있으므로 요청에 액세스 토큰 및 reCAPTCHA 토큰이 포함됩니다.
POST /services/auth/headless/init/registration? HTTP 1.1
Host: MyDomainName.my.site.com
Content-Type: application/json
Authorization: Bearer **************
{
“userdata”: {
“firstName”: “Janice”
“lastName”: “Edwards”
“email”: “janice.edwards@example.com”
“username”: “jedwards@myapp.com”
}
“customdata”: {
{”mobilePhone”=”<mobile phone number>”
}
“password”: “*******”
“recaptcha”:”***********”
“verificationmethod”: “email”
“emailtemplate”: “unfiled$public/SalesNewCustomerEmail”
}Salesforce의 정보 수신 및 요청 식별자 반환
Salesforce가 사용자 정보를 수신합니다. Salesforce는 사용자의 ID를 확인하지 않으므로 나중에 처리하기 위해 이 정보를 대기열에 지정합니다.
POST 요청의 정보가 유효한 경우 Salesforce가 앱에 성공 메시지를 반환합니다. 이 메시지에는 플로의 이후 단계에서 중요한 등록 요청 식별자가 포함되어 있습니다. 성공 메시지 예제는 다음과 같습니다.
{
"status": "success",
"email": “jedwards@myapp.com”
"identifier": “0RXXXXXXXX”
}Salesforce에서 사용자에게 일회용 암호 전송
Salesforce에서 사용자 데이터를 수신하고 앱에 성공 메시지를 전송한 직후 사용자의 확인 방법에 따라 이메일 또는 SMS를 통해 일회용 암호(OTP)를 보냅니다.
앱의 확인 양식 기본 표시
성공 메시지가 표시되면 앱에 OTP 확인 양식이 기본적으로 표시됩니다. 다시 말해 확인 환경의 모양과 느낌은 전적으로 사용자에게 달려 있습니다.
사용자가 확인 양식에 OTP 입력
사용자가 이메일 또는 SMS를 통해 OTP를 수신하고 확인 양식에 입력합니다.
앱의 인가 코드 및 자격 증명 플로 시작
사용자가 ID를 증명하면 앱이 헤드리스 로그인 API에 대한 요청을 통해 즉시 인가 코드 및 자격 증명 플로에 착수합니다.
인가 요청에 다음 머리글을 포함하십시오.
| 머리글 | 필수? | 설명 |
|---|---|---|
Auth-Request-Type
|
예. | Salesforce에 보낼 요청 유형을 지정합니다. 헤드리스 등록의 경우 이 값을 user-registration으로 설정해야 합니다. |
Authorization
|
예. | Salesforce가 요청을 사용자의 저장된 데이터에 연결할 수 있도록 등록 요청을 식별하는 기본 머리글입니다. Salesforce에서 제공한 요청 식별자 및 사용자 ID 확인에 사용되는 OTP가 포함되어야 합니다. 이 값들을 |
Content-Type
|
아니요. Postman을 사용하여 플로를 구축하고 테스트하는 경우 다음 머리글이 추가될 수 있습니다. 숨겨진 머리글을 확인하여 올바른지 확인합니다. | 요청의 형식을 지정합니다(예: application/x-www-form-urlencoded). |
Auth-Verification-Type
|
초기 등록 요청에서 ID 확인 메서드를 지정한 경우 필수입니다. 이 머리글의 값은 요청에서 /services/auth/headless/init/registration 엔드포인트에 대한 verificationmethod 본문 매개 변수의 값과 일치해야 합니다. |
사용자의 ID 확인을 위해 사용되는 방법을 지정합니다. Salesforce는 확인 메서드에 대해 email 및 sms라는 두 가지 값을 지원합니다. |
Uvid-Hint
|
아니요. 앱에서 게스트 사용자 플로를 구현하는 경우 옵션으로 이 머리글을 사용하여 게스트 사용자의 ID에 연결된 고유한 방문자 ID(UVID)가 포함된 JSON 웹 토큰(JWT) 기반 액세스 토큰을 전달할 수 있습니다. UVID를 명명된 사용자 플로에 전달하여 사용자의 쿠키 기본 설정과 같은 게스트 사용자 세션의 컨텍스트 정보를 명명된 사용자 세션으로 전달할 수 있습니다. 머리글에 UVID가 있는 JWT 기반 토큰을 전달하는 대신 요청 본문에 일반 UVID 값을 전달할 수도 있습니다. |
앱에서 완전히 생성하고 관리하는 버전 4 전체 고유 식별자(UUID)인 UVID 값을 포함하는 JWT 기반 액세스 토큰입니다. UVID가 포함된 액세스 토큰을 가져오려면 연결된 앱이나 외부 클라이언트 앱이 JWT 기반 액세스 토큰을 발행하고 앱에서 헤드리스 게스트 플로를 구현하도록 활성화해야 합니다. |
요청 본문에 다음 매개 변수를 포함하십시오.
| 매개 변수 | 필수? | 설명 |
|---|---|---|
client_id
|
예. | 연결된 앱 또는 외부 클라이언트 앱의 소비자 암호입니다. |
response_type
|
예. | 연결된 앱 또는 외부 클라이언트 앱이 요청하는 OAuth 2.0 허용 유형. 인가 코드 및 자격 증명 플로의 경우 값이 code_credentials여야 합니다. |
redirect_uri
|
예. | 인증 성공 후 사용자가 리디렉션되는 URL. 리디렉션 URI는 연결된 앱 또는 외부 클라이언트 앱의 콜백 URL 필드에 있는 값과 일치해야 합니다. 그렇지 않은 경우 승인이 실패합니다. 이 값은 URL로 인코딩되어야 합니다. |
uvid_hint
|
아니요. 앱에 게스트 사용자 플로를 구현하는 경우, 선택적으로 이 매개 변수를 사용하여 게스트 사용자의 ID와 연결된 UVID 값을 전달하고, 게스트 사용자 세션에서 명명된 사용자 세션으로 컨텍스트 정보를 전달할 수 있습니다. 요청 본문에 UVID를 전달하는 대신에 |
앱에서 생성 및 관리하는 버전 4 UUID인 일반 UVID 값입니다. UVID를 가져오려면 연결된 앱 또는 외부 클라이언트 앱을 활성화하여 JWT 기반 액세스 토큰을 발행하고 앱에 헤드리스 게스트 플로를 구현해야 합니다. |
code_challenge
|
PKCE를 사용하는 경우로 한정됩니다. | PKCE 확장을 사용하는 경우 필수입니다. 토큰 요청에서 토큰 요청에서
|
PKCE 등 헤드리스 로그인 API에 대한 요청 예제는 다음과 같습니다.
POST /services/oauth2/authorize? HTTP 1.1
Host: MyDomainName.my.site.com
Auth-Request-Type: user-registration
Auth-Verification-Type: email
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64-encoded request ID:OTP>
response_type=code_credentials&
client_id=******&
redirect_uri=https://www.MyDomainName.my.site.com/services/apexrest/code/exchange&
code_challenge=Y29kZ*******
Salesforce의 요청 확인, 사용자 데이터 검색, 사용자 만들기
Salesforce가 인가 요청을 수신하고 요청 ID 및 OTP를 확인합니다. Salesforce는 이 정보를 사용하여 대기열에 있는 사용자 데이터를 검색하고 Experience Cloud 사이트에 구성된 헤드리스 등록 처리기를 호출합니다. Apex 처리기는 Salesforce에서 사용자를 만들고 계정에 연결합니다.
Salesforce가 코드 포함 사전 구성된 URL에 302 리디렉션 반환
Salesforce가 HTTP 302 리디렉션을 인가 코드가 포함된 사전 구성된 URL로 반환합니다. 302 리디렉션은 브라우저 내에서 처리되며, 응답은 서버의 사전 구성된 콜백 끝점인 리디렉션 URL에 헤드리스 상태로 전달됩니다. 예제 URL은 다음과 같습니다.
https://www.MyDomainName.my.site.com/services/apexrest/code/exchange?code=aPrxC1*******
&sfdc_community_url=https%3A%2F%2FMyDomainName.my.site.com&sfdc_community_id=0DBxxxxxxxxxxxx콜백 처리기의 코드 추출 및 코드 교환 수행
서버측 콜백 처리기는 302 리디렉션에서 인가 코드 및 기타 매개 변수를 추출합니다. 그런 다음, 토큰 끝점에 헤드리스 POST 요청을 보내 코드 교환을 시작합니다.
액세스 토큰 요청의 경우 POST 요청만 사용할 수 있으며, Get 요청은 지원되지 않습니다. 이 요청에 필수인 머리글은 없지만 Content-Type 머리글을 포함할 수 있습니다.
| 머리글 | 필수? | 설명 |
|---|---|---|
Content-Type
|
아니요. Postman을 사용하여 플로를 구축하고 테스트하는 경우 다음 머리글이 추가될 수 있습니다. 숨겨진 머리글을 확인하여 올바른지 확인합니다. | 요청의 형식을 지정합니다(예: application/x-www-form-urlencoded). |
요청 본문에 다음 매개 변수를 포함하십시오.
| 매개 변수 | 필수? | 설명 |
|---|---|---|
client_id
|
예. | 연결된 앱 또는 외부 클라이언트 앱의 소비자 키입니다. |
client_secret
|
예. | 연결된 앱 또는 외부 클라이언트 앱의 소비자 암호입니다. |
code
|
예. | 인가 서버는 단기간 사용할 수 있는 토큰인 인가 코드를 만들고 인증 후 클라이언트에게 전달하며, 클라이언트는 액세스 토큰 또는 필요한 경우 새로 고침 토큰을 얻기 위해 권한 부여 서버에 권한 부여 코드를 전송합니다. |
code_verifier
|
PKCE 확장을 사용하는 경우 필수입니다. |
|
format
|
아니요. | 응답에 예상되는 형식으로서 Salesforce에서는 다음 형식을 지원합니다.
|
grant_type
|
예. | 연결된 앱 또는 외부 클라이언트 앱이 안전한 방문자임을 입증하기 위해 제공할 수 있는 확인 유형입니다. 인가 코드 및 자격 증명 플로의 경우 값이 authorization_code여야 합니다. |
redirect_uri
|
예. | 인증 성공 후 사용자가 리디렉션되는 URL. 리디렉션 URI는 연결된 앱 또는 외부 클라이언트 앱의 콜백 URL 필드에 있는 값과 일치해야 합니다. 이 값은 URL로 인코딩되어야 합니다. |
토큰 요청 예제는 다음과 같습니다.
POST /services/oauth2/token HTTP 1.1
Host: MyDomainName.my.site.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=aPrxC1*******&
client_id=******&
client_secret=******&
redirect_uri=https://www.MyExperienceCloudSite.my.site.com/services/apexrest/code/exchange&
code_verifier=Y29kZ*******
Salesforce에서 액세스 토큰 부여
Salesforce는 토큰 요청을 확인하고 서버측 콜백 처리기에 액세스 토큰 응답을 반환합니다. 다음은 JSON 형식의 액세스 토큰 응답 예제입니다.
{
"access_token":"*******************",
"sfdc_community_url":"https://MyDomainName.my.site.com",
"sfdc_community_id":"0DBxxxxxxxxxxxx",
"signature":"ts6wm/svX3jXlCGR4uu+SbA04M6qhD1SAgVTEwZ59P4=",
"scope":"openid api",
"id_token":"XXXXXX",
"instance_url":"https://yourInstance.salesforce.com",
"id":"https://yourInstance.salesforce.com/id/00Dxxxxxxxxxxxx/005xxxxxxxxxxxx",
"token_type":"Bearer",
"issued_at":"1667600739962"
}액세스 토큰 응답에는 다음의 매개 변수가 포함됩니다.
| 매개 변수 | 필수? | 설명 |
|---|---|---|
access_token
|
예. | 연결된 앱 또는 외부 클라이언트 응용 프로그램이 클라이언트 응용 프로그램을 대신해 보호된 자원에 대한 액세스를 요청하는 OAuth 토큰입니다. 범위 형태의 추가 권한이 액세스 토큰과 함께 제공될 수 있습니다. |
id
|
예. | 사용자를 식별하고 사용자에 대한 추가 정보를 쿼리하는 데 사용할 수 있는 ID URL입니다. ID URL을 참조하십시오. |
id_token
|
아니요. | |
instance_url
|
예. | 사용자 조직의 인스턴스를 표시하는 URL. 예: https://yourInstance.salesforce.com/를 참조하세요. |
issued_at
|
예. | 서명 작성 시 타임스탬프이며, 1970-01-01T0:0:0Z UTC부터 밀리초로 표시됩니다. |
refresh_token
|
아니요. | 웹 서버, 사용자-에이전트 또는 하이브리드 앱 토큰 플로에서 얻은 토큰입니다. 이 값은 암호입니다. 안전하게 보호하기 위해 적절한 조치를 취하십시오. 연결된 앱 또는 외부 클라이언트 앱이 refresh_token 범위로 설정되어 있는 경우에만 이 매개 변수가 반환됩니다. |
signature
|
예. | client_secret으로 서명된 Base64 인코딩된 HMAC-SHA256 서명입니다. 서명에는 연결된 ID 및 issued_at value가 포함될 수 있으며 서버에서 ID URL을 전송한 이후 ID URL이 변경되지 않았는지 확인하는 작업에 사용됩니다. |
sfdc_community_url
|
예. | Experience Cloud 사이트의 URL입니다. |
sfdc_community_id
|
예. | 사용자의 Experience Cloud 사이트 ID입니다. |
state
|
아니요. | 클라이언트가 요청한 상태. 원본 쿼리 문자열에 state 매개 변수가 들어 있지 않은 경우에만 이 값이 포함됩니다. |
token_type
|
예. | 액세스 토큰을 포함하는 모든 응답에 사용되는 Bearer 토큰 유형. |
콜백 처리기의 토큰 응답 처리 및 앱에 매개 변수 반환
서버측 콜백 처리기는 응답에서 액세스 토큰을 가져온 다음, 사용자 데이터, 토큰, 세션 데이터와 함께 액세스 토큰 및 상태를 브라우저에 반환합니다. 가장 좋은 방법으로는 액세스 토큰을 반환하는 대신 서버를 구성하여 액세스 토큰을 저장하고 앱에 대한 세션을 만든 후 앱에 세션을 반환하는 것이 좋습니다. 개발자는 세션 만들기, 액세스 토큰 저장, 로그인 상태 관리를 포괄적으로 제어할 수 있으므로 세부적인 구현 방식은 사용자에게 달려 있습니다.
브라우저 콘솔 로그에 있는 성공적인 응답의 예제는 다음과 같습니다.
{"success":true,"state":"https://MyExperienceCloudSite.my.site.com/","errMsg":null,"access_token":"00*******"}앱의 토큰 응답 처리 및 사용자 세션 만들기
앱이 토큰 응답을 수신하고 처리한 후 사용자 세션을 만듭니다.
앱에 사용자 등록 후 작업 수행
이제 사용자가 등록 및 로그인되며, 앱에서 Salesforce 데이터에 액세스해야 하는 작업을 수행합니다. 예를 들어 Salesforce에 저장되는 여행 예약 내역에 액세스하기 위해 버튼을 클릭합니다.
앱이 Salesforce 끝점에 인증된 호출 수행
사용자의 Salesforce 데이터에 액세스하기 위해 앱은 액세스 토큰을 사용하여 Salesforce API와 같은 보호된 Salesforce 끝점에 인증된 호출을 수행합니다.
사용자의 Salesforce 데이터 액세스 허용
이제 사용자가 앱에서 보호된 Salesforce 데이터에 액세스할 수 있습니다. 예를 들어 사용자는 자신의 여행 예약 내역을 볼 수 있습니다.
