Skip to content

CloudBread를 사용하여 Flappy Bird 게임에 서버 구축 2. 애저 모바일 앱 사용하기

YoonSeok Hong edited this page Oct 22, 2017 · 7 revisions

6. Azure Mobile App 사용하기 (Http Rest API 호출)

Azure Mobile App 은 HTTP RESTful API 를 지원하기 때문에, 어떠한 플랫폼에서든 Http Request만으로 사용 할 수 있습니다. CloudBread 역시 Azure Mobile App 을 바탕으로 하기 때문에, HTTP Request 하는 것만 익숙해지면, 쉽게 사용 하실 수 있습니다.

Azure 인증이란?

Facebook SDK 에서 받아온 User Token을 사용하여, 애저에서 발급하는 토큰을 발급받을 것입니다. 애저 인증 기능을 사용하기 위해서는 HTTP Request 할 때, Header 에 애저에서 발급받은 토큰을 항상 넣어야 한다는 것입니다.

다음은 HTTP Request 를 하기 위해 꼭 필요한 헤더 값 입니다.

"ZUMO-API-VERSION" : 2.0.0
"Accept" : "application/json"
"Content-Type" : "application/json"
"X-ZUMO-FEATURES" : "AJ"
"x-zumo-auth" : "<애저에서 발급받은 토큰>"

이 때, Azure 에서 발급받은 토큰을 x-zumo-auth 에 넣어 http 호출을 함으로써, 비정상적인 Http 호출을 막을 수 있습니다.

Http 통신에 필요한 스크립트 추가하기

  1. 레포지토리의 코드를 다운받습니다. 4th-Offline-Camp-master/CloudBread-Authentication 안에 있는 CloudBread 폴더를 프로젝트에 추가합니다. CloudBread 폴더 안에 다음과 같은 파일을 필요한 파일들 입니다.
AuthData.cs
AzureAuthentication.cs
AzureMobileAppRequestHelper.cs
CloudBread.cs
MemberData.cs
MemberGameInfo.cs
WWWHelper.cs

'주의' : 만약 프로젝트에 CloudBread-Unity-SDK 가 추가되어있다면, 지우고 다음 위 단계를 진행해주세요~

  1. Json 파싱을 위해 JsonFX 파일을 링크에서 다운받습니다. JsonFX Signed_v2.0.zip 다운로드 프로젝트의 Assets - Plugs 폴더에 다운받은 JsonFx.Json.dll 파일을 넣습니다.

Azure 토큰 발급받기

FacebookLoginScipt.cs 스크립트에서 CloudBread 클래스의 Login 함수 호출하기 (// TODO 부분에 추가하기)

CloudBread cb = new CloudBread();
cb.Login(AzureAuthentication.AuthenticationProvider.Facebook, aToken.TokenString, Callback_login);

Login 콜백 함수 구현

private void Callback_login(string id, WWW www)
{
    print(www.text);
    string resultJson = www.text;

    JsonReader jsonReader = new JsonReader();
    AuthData resultData = jsonReader.Read<AuthData>(resultJson);

    // Azure 인증을 위해 발급받은 Azure Token 을 헤더에 추가
    AzureMobileAppRequestHelper.AuthToken = resultData.authenticationToken;

    // 게임에서 사용 할 userId 를 PlayerPrefs 에 저장
    // 원래 게임에서는 아래와 같이, Azure 에서 제공해 주는 userID 를 넣는 것이 맞지만,
    // 데모 서버를 사용하는 분들은 임의의 아이디를 넣어서 다른 사람들과 충돌이 나지 않도록 합시다
    PlayerPrefs.SetString("userId", resultData.user.userId);

}

애저에서 Token과 UserID를 json 형식 제공

{
  "authenticationToken" : "<발급받은 Token>",
  "user" : {
    "userId" : "sid:<발급받은 sid>"
  }
}
  • authenticationToken 을 호출 할 때마다 헤더에 X-ZUMO-AUTH 값으로 넣어야만 서버로부터 응답을 받을 수 있다.
  • userId의 sid 를 게임에서 유일한 값 (memberID)로 사용
Clone this wiki locally