Photon Cloud를 이용하여 ID/PW로 로그인 인증을 하고싶어 찾아보니 그렇게하려면 커스텀서버를 이용해야하더라.
커스텀 서버를 이용하는 영상을 찾았는데 (https://www.youtube.com/watch?v=DHn5_17D6H4)
DB를 이용하여 서버를 통해 인증을 하는 방법이더라.
여러가지로 불편하고 손이 많이가서 더 좋은 방법이 없나 찾아보니 포톤코리아 블로그에 이런 글이 있었다.
PlayFab을 이용하여 PUN에 DB 연동하기 (http://photonkr.tistory.com/10?category=1000132 )
막상 따라해보니 잘 안되고 뭔가 2% 부족한 느낌..
그래서 직접 찾아보면서 해결한 방법을 공유하려고 한다.
1. PlayFab에 들어가서 아이디를 만들고 새로운 타이틀을 만든다.
가입하고 타이틀을 생성하면 이름 밑에 TitleID가 나온다. 위의 5C01이 타이틀
2. 이제 아까 블로그 링크를 따라하면서 기본적으로 세팅한다.
PlayFab을 이용하여 PUN에 DB 연동하기 (http://photonkr.tistory.com/10?category=1000132 )
SDK까지만 다운받고 이후에 데모 테스트는 하지않아도 된다.
SDK는 여기서도 다운받을 수 있다. (https://api.playfab.com/sdks/unity)
어차피 저거대로 하면 설정이 부족해서 에러뜸.
부족하거나 잘 보이지않는 부분은 PlayFab에서 제공하는 링크를 통해 따라할 것.
https://api.playfab.com/docs/tutorials/landing-tournaments/photon-unity
이것도 마찬가지로 포톤 에셋받고 AppID 세팅까지만 끝내둔다.
3. PlayFab 세팅을 해준다.
SDK를 설치하면 나오는 PlayFab 메뉴에서 MakePlayFabSharedSettings를 눌러준다.
누르면 위와 같이 세팅창이 뜨는데 PlayFab의 TitleID와 Developer Secret Key를 넣어주도록한다.
Developer Secret Key에는 이거 넣는거 맞는건지는 모르겠는데 Photon 연동해서 나온 Secret Key를 넣어줬다.
아니면 PlayFab 사이트의 설정 들어가면 나오는 Secret Key를 넣어주면 될듯. 일단은 이대로도 잘 동작한다.
Production Environment Url?에는 .playfabapi.com을 넣어준다.
4. 이제 스크립트에서 API를 이용해서 PlayFab 서버에 접근한다.
테스트하기 위해서 UI를 대충 만들었음.
1 2 | using PlayFab; using PlayFab.ClientModels; | cs |
우선 API를 사용하기위해 PlayFab과 PlayFab.ClientModels을 using 해준다.
1 2 3 4 | void Start() { PlayFabSettings.TitleId = "5C01"; } | cs |
그리고 Start()함수에서 다시한번 TitleId를 세팅해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public InputField ID_Input; public InputField PW_Input; public InputField Email_Input; public Text ErrorText; private string username; private string password; private string email; public void ID_value_Changed() { username = ID_Input.text.ToString(); } public void PW_value_Changed() { password = PW_Input.text.ToString(); } public void Email_value_Changed() { email = Email_Input.text.ToString(); } | cs |
3개의 InputField와 에러가 표시될 Text를 받아왔다.
InputField의 Value값이 변경되면 해당함수를 실행하게끔 하였다.
그래서 현재 스크립트에서 InputField에 작성된 데이터를 변수로 가지고 있게함.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public void Login() { var request = new LoginWithPlayFabRequest { Username = username, Password = password }; PlayFabClientAPI.LoginWithPlayFab(request, OnLoginSuccess, OnLoginFailure); } private void OnLoginSuccess(LoginResult result) { Debug.Log("로그인 성공"); SceneManager.LoadScene("Launcher"); ErrorText.text = "로그인 성공"; } private void OnLoginFailure(PlayFabError error) { Debug.LogWarning("로그인 실패"); Debug.LogWarning(error.GenerateErrorReport()); ErrorText.text = error.GenerateErrorReport(); } | cs |
로그인버튼을 누르면 Login() 함수가 실행된다.
LoginWithPlayFabRequest 를 이용하여 로그인할 Username과 Password를 설정한다.
그리고 PlayFabClientAPI.LoginWithPlayFab() 함수를 통해 PlayFab 서버로 로그인한다.
해당 document를 보면 TitleId Username Password는 필수사항이며, Id는 미리 세팅해두면 입력하지 않아도 된다.
(https://api.playfab.com/documentation/client/method/LoginWithPlayFab)
로그인이 성공하면 OnLoginSuccess 함수가 불리고 실패하면 OnLoginFailure 함수가 불림.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public void Register() { var request = new RegisterPlayFabUserRequest { Username = username, Password = password, Email = email }; PlayFabClientAPI.RegisterPlayFabUser(request, RegisterSuccess, RegisterFailure); } private void RegisterSuccess(RegisterPlayFabUserResult result) { Debug.Log("가입 성공"); ErrorText.text = "가입 성공"; } private void RegisterFailure(PlayFabError error) { Debug.LogWarning("가입 실패"); Debug.LogWarning(error.GenerateErrorReport()); ErrorText.text = error.GenerateErrorReport(); } | cs |
회원등록도 마찬가지로 RegisterPlayFabUser() 함수를 이용한다.
기본적으로는 Username과 Email을 모두 입력하여야 하며
RequireBothUsernameAndEmail = false로 설정하면 하나만 받는다.
(https://api.playfab.com/documentation/client/method/RegisterPlayFabUser)
5. 유저관리
Password가 필요하다고 뜸
Password가 6~100자 사이여야된다고 뜸
User가 없다
Username이나 Password가 잘못됨.
등등 에러잘뜨고 여튼 로그인 및 회원등록 잘됨.
회원등록이 되면 PlayFab사이트에서 Players에 들어가면 등록된 유저목록이 뜸.
여기에 표시되는 ID들은 사이트에서 식별되는 ID로 클릭해서 들어가면 실제 Username과 Email을 확인할수 있다.
password는 보안되어 확인할 수 없으며 변경만 가능. Email은 UNLOCK버튼을 누르면 확인할 수 있다.
이 페이지에서 플레이어를 삭제할수도 있고 관리할 수 있다.
6. 테스트
잘 됨.
방금 가입한 유저가 Players에 새로 생성된 걸 확인할 수 있다.
'프로그래밍 공부 > Photon' 카테고리의 다른 글
PlayFab으로 닉네임 설정하기 (8) | 2018.09.22 |
---|---|
메세지를 전송하는 방법. OnSerializePhotonView, RPC, RaiseEvent (0) | 2018.09.18 |
10. 튜토리얼 문제 해결 (0) | 2018.08.07 |
9. 플레이어 UI 프리팹 (0) | 2018.08.07 |
8. 플레이어 네트워크 인스턴스 생성 (0) | 2018.08.07 |