계정 연결

계정 연결은 Messenger 플랫폼에서 제공하는 다른 웹 보기 기능과는 별개입니다. 이는 로그인 버튼을 통해서만 시작할 수 있으며, 봇의 고정 메뉴, URL 버튼, 이미 열려 있는 웹 보기 플로 또는 채팅 플러그인에서는 시작할 수 없습니다.

이러한 기능을 사용하는 개발자는 이제 Messenger 확장 기능에서 getContext() 함수를 사용하여 안전하게 사용자 ID를 가져올 수 있습니다. 그러면 봇이 해당 ID를 사용하여 사용자 계정에 연결하거나 경험을 맞춤화할 수 있습니다.

계정 연결은 현재 iOS와 Android Messenger 앱에서만 지원됩니다.

사용자가 비즈니스와 대화를 시작할 때 귀사와 거래한 적이 있는 고객인지 알고 싶을 수 있습니다. Facebook에서는 이를 돕기 위해 비즈니스 사용자 ID와 연결하거나 연결 해제하기 위한 보안 프로토콜을 만들었습니다.

계정 연결을 사용하면 인증 플로를 사용하여 로그인하도록 사용자를 초대하고, 로그인 후 Messenger 페이지 범위 ID(PSID)를 받을 수 있습니다. 그러면 사용자에게 더욱 안전하고 맞춤화된 관련 경험을 제공할 수 있습니다.

목차

연결 프로세스

계정 연결 플로는 몇 가지 간단한 단계로 구성됩니다.

  1. 로그인 버튼을 사용하여 콜백 URL을 등록합니다.
  2. Messenger 플랫폼은 사용자가 계정 연결 플로를 시작할 때 등록된 URL을 호출합니다. redirect_uriaccount_linking_token 매개변수는 등록된 콜백에 첨부됩니다.
  3. 연결이 완료되면 redirect_uri에서 제공한 위치로 사용자를 리디렉션하고, 개발자가 정의한 authorization_code 매개변수를 첨부하여 연결을 확인합니다.
  4. 계정 연결 엔드포인트를 사용하여 사용자의 페이지 범위 ID(PSID)를 가져옵니다(선택 사항). 이 단계는 연결 프로세스의 일부로 사용자의 PSID가 필요한 특별한 경우에만 사용해야 합니다.

계정 연결 해제를 시작하는 방법은 다음과 같습니다.

콜백

사용자가 계정 연결을 트리거하면 계정 연결 URL이 Messenger 플랫폼에서 호출됩니다. redirect_uriaccount_linking_token 매개변수가 URL 콜백에 첨부됩니다.

<yourAccountLinkingUrl>
  ?account_linking_token=ACCOUNT_LINKING_TOKEN
  &redirect_uri=CALLBACK_URL

계정이 연결되면 브라우저를 redirect_uri 매개변수에서 지정된 URL로 리디렉션하고 직접 정의한 authorization_code 매개변수를 첨부하여 플로를 완료해야 합니다. URL에 이미 매개변수가 포함되어 있을 수 있으므로 인증 코드를 적절히 첨부해야 합니다.

<redirect_uri>
  &authorization_code=AUTHORIZATION_CODE

계정을 연결하지 못한 경우 매개변수로 전달된 redirect_uri로 브라우저를 리디렉션하되, authorization_code는 첨부하지 마세요.

매개변수

매개변수 이름 설명

redirect_uri

Messenger에서 추가할 리디렉션 URI로, 인증 플로가 끝날 때 이 위치로 브라우저를 리디렉션해야 합니다. URL 인코딩 매개변수가 포함되어 있을 수 있습니다.

account_linking_token

Messenger에서 전달한 단기 실행 토큰으로, 리디렉션 스키마에서 전달해야 합니다. 이 토큰은 5분간만 유효하고 암호화되어 있으며 사용자마다 고유합니다.
이 토큰으로 PSID 검색 엔드포인트를 호출하여 해당하는 PSID를 가져올 수 있습니다.

authorization_code

개발자가 연결 성공 여부를 확인하기 위해 제공하는 코드입니다. Messenger 플랫폼은 사용자의 PSID와 함께 이 코드를 계정 연결 Webhooks 이벤트에 다시 전달합니다. 이 매개변수를 전달하지 못하면 연결 프로세스가 중단됩니다.

Webhooks 이벤트

성공적인 연결 플로는 계정 연결 이벤트를 트리거하여 사용자의 페이지 범위 ID(PSID)를 전달합니다.

계정 연결 콜백 이벤트에 등록해야 합니다. 이 Webhooks 이벤트를 확인하지 않으면 연결 프로세스가 중단됩니다.

PSID 검색 엔드포인트

경우에 따라 연결 플로 중에 사용자 페이지 범위 ID(PSID)를 검색해야 할 수도 있습니다. Facebook에서는 이 상황을 돕기 위해 PSID 검색 엔드포인트를 제공하여 사용자의 PSID가 지정된 유효하고 만료되지 않은 account_linking_token을 가져올 수 있도록 합니다.

요청

curl -X GET "https://graph.facebook.com/v2.6/me?access_token=PAGE_ACCESS_TOKEN \
      &fields=recipient \
      &account_linking_token=ACCOUNT_LINKING_TOKEN"

응답

{
  "id": "PAGE_ID",
  "recipient": "PSID"
}    

경우에 따라 백엔드에서 프로그래밍 방식으로 사용자 페이지 범위 ID(PSID)를 연결 해제해야 할 수도 있습니다. Facebook에서는 이 상황을 돕기 위해 PSID 연결 해제 엔드포인트를 제공하여 사용자 계정이 지정된 유효한 PSID를 연결 해제할 수 있도록 합니다.

요청

curl -X POST -H "Content-Type: application/json" -d '{
   "psid":"PSID"
}' "https://graph.facebook.com/v2.6/me/unlink_accounts?access_token=PAGE_ACCESS_TOKEN"

응답

{
  "result": "unlink account success"
}

모범 사례

Messenger 외부로 확장되는 사용자 계정 시스템이 있는 경우 계정 연결을 사용하세요.

사용자가 Messenger 내에서 계정을 만들어 다른 곳에서도 사용할 수 있도록 하세요.

컨텍스트상 관련이 있을 경우, 즉 봇 사용자가 로그인의 장점을 알 수 있을 때 로그인 요청 메시지를 표시하세요.

사용자가 로그인을 거절할 경우 봇이 어떻게 행동해야 하는지 생각해 보세요.

로그인 후 명확한 확인 및 친근한 환영 메시지를 제공하세요.

사용자가 오직 Messenger를 통해 개발자와 소통하는 경우 계정 연결을 사용하지 마세요. 스레드 ID를 통해 계정 정보를 저장할 수 있습니다.

되도록 바로 계정 연결을 요청하지 마세요. 사용자가 먼저 봇에 대해 알아보는 시간을 가질 수 있도록 하세요.

추천 디자인 플로

  1. 계정 연결 버튼이 포함된 메시지를 사용하여 로그인 요청 메시지를 표시합니다.
  2. 계정 연결 웹 보기에서 (계정 만들기 옵션을 포함한) 로그인 페이지를 표시합니다. 모바일 화면에서도 잘 보이고 작동하는지 확인합니다.
  3. 로그인 후 웹 보기에 확인 메시지를 표시합니다. 사용자가 나중에 이 메시지를 직접 닫아야 합니다.
  4. 로그아웃 옵션을 포함하여 친근한 감사 메시지 및/또는 다음 단계 내용을 스레드에 표시합니다.