다음을 통해 공유


CloudScript에서 웹후크 호출하기

CloudScript의 잘 알려지지 않은 기능 중 하나는 REST(표준 Representational State Transfer) 호출을 사용하여 웹 API 엔드포인트에서 웹후크 호출을 수행할 수 있다는 것입니다.

참고 항목

가능하면 최신 CloudScript 함수를 사용하여 웹훅을 호출하는 것이 좋습니다.

그러면 타이틀이 기본 정보 서비스를 호출할 수 있지만, 귀하가 소유한 끝점으로 커뮤니케이션을 확보하기 위해 더욱 복잡한 시나리오(예: OAuth 사용) 가능하게 합니다.

이 자습서에서는 안전하지 않거나안전한 시나리오 CloudScript에서 Webhook 호출을 만드는 방법을 설명합니다.

REST 호출로서 CloudScript에서 웹후크 호출의 구조는 간단합니다. 지정할 요소들:

  • URL 끝점.
  • REST 메소드(게시, 받기, 올리기, 또는 삭제).
  • 헤더는 필수입니다.
  • 콘텐츠 타입(가장 일반적으로는 응용 프로그램/JSON).
  • 콘텐츠 자체(본체).

예컨대, 서버측 논리의 버전 번호를 받기 위한 기본 웹 API 호출은 아래 제공된 예처럼 보일 수도 있습니다.

// CloudScript
var url = "http://api.yoursite.com/playfab_call/GetVersion";
var method = "post";
var contentBody = "";
var contentType = "application/json";
var headers = {};
var responseString =  http.request(url,method,contentBody,contentType,headers);

반응의 본체는 스트링파이 형식으로 반환되므로 귀하는 그 후에 그것을 스크립트의 나머지 부분에 사용할 수 있습니다.

이 사례에서 우리는 버전을 쿼리하고 있었으므로 귀하는 여기 제공된 것처럼 log에 반응을 작성할 수 있을 것입니다.

// CloudScript
log.info(responseString);

CloudScript 실행 끝에서 클라이언트에 대한 반응은 아래 제공된 이 예처럼 보일 수 있습니다.

//HTTP Response
{
    "code": 200,
    "status": "OK",
    "data":
    {
        "FunctionName": "MyScript",
        "Revision": 23,
        "FunctionResult": true,
        "Logs": [
        {
            "Level": "Info",
            "Message": "{\"version\": 3}"
        }],
        "ExecutionTimeSeconds": 0.4309841,
        "MemoryConsumedBytes": 29608,
        "APIRequestsIssued": 0,
        "HttpRequestsIssued": 1
    }
}

그러나 통신해야 하는 보안서비스가 있는 경우 ID를 설정하기 위해 먼저 자격 증명을 해당 서비스와 교환해야 합니다.

OAuth 솔루션의 경우, 그것은 클라이언트 ID 및 암호를 사용하여 소지자 액세스 토큰을 요청하는 것을 의미합니다. 이는 특정 OAuth 구현에 따라 다르지만 호출은 다음 예제와 같이 표시될 수 있습니다.

//CloudScript
var url = "https://api.yoursite.com/playfab_call/request_token";
var method = "post";
var contentBody = "grant_type=client_credentials";
var contentType = "application/x-www-form-urlencoded";
var headers = {};
headers["client_id"] = clientId;
headers["client_secret"] = clientSecret;

var tokenResponse =  http.request(url,method,contentBody,contentType,headers);

적절한 응답이 제공되면 그 때 응답에서 bearer_access_token 구문 분석을 할 수 있습니다(다시 말하지만 이 OAuth 구현의 세부 사항에 따라 달라지지만 이 형식의 인증에 대한 매우 일반적인 패턴임).

//CloudScript
var parsedData = JSON.parse(tokenResponse);
var bearer_access_token = parsedData["access_token"];

그러면 귀하는 bearer_access_token을 제공함으로써 OAuth 보안 기능을 호출할 수 있을 것입니다.

//CloudScript
var url = "https://api.yoursite.com/playfab_call/do_action";
var method = "post";
var contentBody = customActionBody;
var contentType = "application/json";
var headers = {};
headers["authorization"] = "Bearer " + bearer_access_token;

따라서 이 경우의 기본 패턴은 호출을 위해 고유 소지자 액세스 토큰을 얻은 다음 그것을 사용해 해당 호출을 확보하기 위해 귀하가 응용 프로그램의 클라이언트 ID 및 암호를 사용하는 것입니다.

보시다시피 이러한 호출은 모두 중간자 공격을 방지하기 위해 SSL을 사용해 이루어질 것입니다.

CloudScript에서 HTTP 호출을 사용하여 타이틀을 위해 필요한 다른 웹 API를 호출할 수 있습니다. 그러면 타이틀 기능을 PlayFab이 직접 제공하는 것 이상으로 확장할 수 있으므로 귀하 자신의 맞춤 서비스를 만들어 사용하거나 심지어 다른 것에 액세스할 수 있는 옵션이 생깁니다.

이 모두가 CloudScript 내에서 발생하므로 그것은 그러한 호출을 하기 위한 서버 권한 컨텍스트를 제공합니다. 즉, CloudScript에서 필요한 보호 기능을 통해 플레이어가 부정 행위를 하거나 피해야하는 기능과 데이터에 액세스하는 것을 방지할 수 있습니다.