Chain2D.Auth
로그인. 어떤 방법이 있는지 묻고, 하나를 골라 시작하고, 실패했다는 것을 듣습니다. 로그인 실패는 접속 실패와 따로 옵니다 — 다음에 눌러야 할 것이 다르기 때문입니다.
Auth.providers
Chain2D.Auth.providers() -> {string}{string}이 게임에 켜져 있는 로그인 방법의 이름들. `"google"` 처럼 `Auth.signIn` 에 그대로 넘기는 문자열입니다. 비어 있을 수 있습니다.
로비가 어떤 로그인 버튼을 그릴지 묻습니다. 부르는 즉시 값이 옵니다 — Luau 호출은 곧바로 돌아오고 HTTP 요청은 그렇지 않아서, 호스트가 스크립트가 필요로 하기 전에 미리 받아 두고 여기에 놓아둡니다. 로비는 약속이 아니라 답을 받습니다. 목록이 비는 경우는 둘입니다 — 이 게임에 켜 둔 로그인 방법이 없거나, 호스트가 목록을 받아 오지 못했거나. 뒤쪽은 로비를 멈추지 않고 빈 목록으로 그냥 뜨므로, 목록이 비었을 때 보여줄 화면은 스크립트가 가지고 있어야 합니다.
local providers = Chain2D.Auth.providers()
if #providers == 0 then
print("이 게임에는 로그인 방법이 없습니다")
else
Chain2D.Auth.signIn(providers[1])
endAuth.signIn
Chain2D.Auth.signIn(provider: string) -> (boolean, string?)| provider | string | `Auth.providers()` 가 준 이름 중 하나. 목록에 있는 이름인지는 아무도 확인하지 않습니다 — 무엇을 켰는지는 게임이 아는 것이고, 빌드가 그것을 뒤집으면 게임이 새로 켠 방법이 이 빌드에서만 막힙니다. 문자열이어야 합니다. 빼먹거나 표 같은 것을 넘기면 오류가 납니다. |
(boolean, string?)호스트가 로그인을 시작했으면 `true`. 시작하지 못했으면 `false` 와 이유가 함께 옵니다 — 이름이 비었거나(`no sign in method was named`), 그 방법에 필요한 설정을 이 빌드가 가지고 있지 않을 때(예: `"google"` 인데 이 게임의 구글 클라이언트 id 를 받아 두지 못한 경우)입니다.
고른 방법으로 로그인을 시작합니다. `true` 는 시작했다는 뜻이지 로그인이 끝났다는 뜻이 아닙니다 — 그 뒤에 실패하면 이유는 `Auth.onFailed` 로 옵니다. 이유가 두 곳으로 나뉜 것이 아니라 시점이 다릅니다: 시작하기도 전에 안 되는 줄 아는 것만 `false` 로 돌아오고, 나머지는 나중에 핸들러로 옵니다. 시작했다고 단계가 오르지는 않습니다 — `Chain2D.stage()` 는 호스트가 세션을 손에 넣은 다음에야 움직입니다. 이 빌드가 로그인을 붙이지 않았다면 값 대신 "this build cannot sign in" 오류가 납니다.
local ok, why = Chain2D.Auth.signIn("google")
if not ok then
print("로그인을 시작하지 못했습니다: " .. why)
endAuth.onFailed
Chain2D.Auth.onFailed(handler: (reason: string) -> ())| handler | (reason: string) -> () | 로그인이 실패할 때마다 이유 하나와 함께 불립니다. 함수가 아니면 오류가 납니다. |
로그인이 실패했다는 것을 듣습니다. 접속 실패(`Chain2D.onJoinFailed`)와 따로 오는 이유는 다음에 눌러야 할 것이 다르기 때문입니다 — 접속 실패는 다시 눌러 볼 만하지만, 로그인 실패는 무언가 바뀌기 전에는 다시 눌러도 같은 자리에서 같은 이유로 멈춥니다. 하나를 다른 하나로 알리면 로비는 결코 되지 않을 버튼을 내밀게 됩니다. 여러 번 등록하면 등록한 순서대로 불립니다 — 다만 핸들러 하나가 오류를 내면 거기서 스크립트가 꺼지므로 뒤에 등록한 것들은 불리지 않습니다.
Chain2D.Auth.onFailed(function(reason)
-- 다시 시도 버튼보다 이유를 보여주는 것이 맞습니다.
print("로그인 실패: " .. reason)
end)