Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
É possível usar o Game Center para fazer login de jogadores em um jogo para plataformas Apple criado com o Firebase. Para
usar o login do Game Center com o Firebase, primeiro verifique se o
jogador local está conectado ao Game Center e, em seguida, use o objeto GameCenterAuthProvider
para gerar uma credencial do Firebase que você pode usar para autenticar nessa plataforma.
Antes de começar
Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase.
No Xcode, com seu projeto do app aberto, navegue até File > Add Packages.
Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:
https://github.com/firebase/firebase-ios-sdk.git
Escolha a biblioteca Firebase Authentication.
Adicione a sinalização -ObjC à seção Outras sinalizações do vinculador das configurações de compilação do destino.
Quando terminar, o Xcode vai começar a resolver e fazer o download das
dependências em segundo plano automaticamente.
Em seguida, execute algumas etapas de configuração:
Registre o seu aplicativo para Apple no Firebase. Para isso,
digite o ID do pacote do app na seção de registro, além de outras
informações opcionais, como o ID da App Store e o ID da equipe etc. Isso é necessário para
verificar com segurança o público da credencial do Game Center do usuário antes
de concluir o login.
Ative o Game Center como um provedor de login para seu projeto do Firebase:
Verifique se o ID do pacote que você fornece ao iTunes Connect corresponde ao ID que você usou ao conectar seu aplicativo ao projeto do Firebase.
Como parte da integração do Game Center, você define um gerenciador de autenticação que é chamado em vários pontos no processo de autenticação do Game Center. Nele, verifique se o jogador está conectado ao Game Center. Em caso afirmativo, continue com o login no Firebase.
Swift
letlocalPlayer=GKLocalPlayer.localPlayer()localPlayer.authenticateHandler={(gcAuthViewController?,error)inifletgcAuthViewController=gcAuthViewController{// Pause any activities that require user interaction, then present the// gcAuthViewController to the player.}elseiflocalPlayer.isAuthenticated{// Player is signed in to Game Center. Get Firebase credentials from the// player's Game Center credentials (see below).}else{// Error}}
Objective-C
__weakGKLocalPlayer*localPlayer=[GKLocalPlayerlocalPlayer];localPlayer.authenticateHandler=^(UIViewController*gcAuthViewController,NSError*error){if(gcAuthViewController!=nil){// Pause any activities that require user interaction, then present the// gcAuthViewController to the player.}elseif(localPlayer.isAuthenticated){// Player is signed in to Game Center. Get Firebase credentials from the// player's Game Center credentials (see below).}else{// Error}};
Autenticar no Firebase
Depois de determinar que o jogador local fez login no Game Center, faça login no seu jogo criando um objeto AuthCredential com GameCenterAuthProvider.getCredential() e transmitindo esse objeto para signIn(with:):
Swift
// Get Firebase credentials from the player's Game Center credentialsGameCenterAuthProvider.getCredential(){(credential,error)inifleterror=error{return}// The credential can be used to sign in, or re-auth, or link or unlink.Auth.auth().signIn(with:credential){(user,error)inifleterror=error{return}// Player is signed in!}
Objective-C
// Get Firebase credentials from the player's Game Center credentials[FIRGameCenterAuthProvidergetCredentialWithCompletion:^(FIRAuthCredential*credential,NSError*error){// The credential can be used to sign in, or re-auth, or link or unlink.if(error==nil){[[FIRAuthauth]signInWithCredential:credentialcompletion:^(FIRUser*user,NSError*error){// If error is nil, player is signed in.}];}}];
Próximas etapas
Depois que um usuário faz login pela primeira vez, uma nova conta de usuário é criada e vinculada ao ID do Game Center. Ela é armazenada como parte do seu projeto do Firebase e pode ser usada para identificar um usuário em cada app no seu projeto.
No seu jogo, é possível receber o UID do Firebase referente ao usuário usando o objeto User:
Swift
letuser=Auth.auth().currentUserifletuser=user{letplayerName=user.displayName// The user's ID, unique to the Firebase project.// Do NOT use this value to authenticate with your backend server,// if you have one. Use getToken(with:) instead.letuid=user.uid}
Objective-C
FIRUser*user=[FIRAuthauth].currentUser;if(user){NSString*playerName=user.displayName;// The user's ID, unique to the Firebase project.// Do NOT use this value to authenticate with your backend server,// if you have one. Use getTokenWithCompletion:completion: instead.NSString*uid=user.uid;}
Nas regras de segurança do Firebase Realtime Database e do Cloud Storage, é possível usar a variável auth para acessar o ID exclusivo do usuário que fez login. Use essa informação para controlar quais dados os usuários podem acessar.
Para ver informações de um jogador do Game Center ou acessar os serviços do Game Center, use as APIs fornecidas pelo Game Kit (em inglês).
Para desconectar um usuário do Firebase, chame Auth.signOut():
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-05 UTC."],[],[],null,["You can use Game Center to sign players in to an Apple platforms game built on Firebase. To\nuse Game Center Sign-in with Firebase, first make sure the local player is\nsigned in with Game Center, and then use the `GameCenterAuthProvider` object to\ngenerate a Firebase credential, which you can use to authenticate with Firebase.\n\nBefore you begin\n\nUse Swift Package Manager to install and manage Firebase dependencies.\n| Visit [our installation guide](/docs/ios/installation-methods) to learn about the different ways you can add Firebase SDKs to your Apple project, including importing frameworks directly and using CocoaPods.\n\n1. In Xcode, with your app project open, navigate to **File \\\u003e Add Packages**.\n2. When prompted, add the Firebase Apple platforms SDK repository: \n\n```text\n https://github.com/firebase/firebase-ios-sdk.git\n```\n| **Note:** New projects should use the default (latest) SDK version, but you can choose an older version if needed.\n3. Choose the Firebase Authentication library.\n4. Add the `-ObjC` flag to the *Other Linker Flags* section of your target's build settings.\n5. When finished, Xcode will automatically begin resolving and downloading your dependencies in the background.\n\n| **Deprecated:** Apple has [deprecated the `playerID` field](https://developer.apple.com/documentation/gamekit/gkplayer/1521127-playerid/). The Firebase Apple platforms SDK will use `gamePlayerID` and `teamPlayerID` from version 10.5.0 and onwards. Upgrading to SDK version 10.5.0 or later updates existing integrations that use `playerID` to instead use `gamePlayerID` and `teamPlayerID`. Upgrading existing Game Center Sign-in integrations to SDK version 10.5.0 or later is irreversible. For more details, see [Method: accounts.signInWithGameCenter](https://cloud.google.com/identity-platform/docs/reference/rest/v1/accounts/signInWithGameCenter).\n\nNext, perform some configuration steps:\n\n1. Make sure you register your Apple app with Firebase. This means entering your app's bundle ID in the registration section along with additional optional information such as App Store ID and Team ID, etc. This will be required for securely verifying the audience of the user's Game Center credential before completing sign-in.\n2. Enable Game Center as a sign-in provider for your Firebase project:\n 1. In the [Firebase console](//console.firebase.google.com/), open the **Authentication** section.\n 2. On the **Sign in method** tab, enable the **Game Center** sign-in provider.\n\nIntegrate Game Center Sign-in into your game\n\nFirst, if your game doesn't already use Game Center, follow the instructions in\n[Incorporating Game Center into Your Game](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/GameKit_Guide/GameCenterOverview/GameCenterOverview.html#//apple_ref/doc/uid/TP40008304-CH5-SW22) and\n[Authenticating a Local Player on the Device](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/GameKit_Guide/Users/Users.html#//apple_ref/doc/uid/TP40008304-CH8-SW19) on the Apple\ndeveloper site.\n\nBe sure the bundle ID you provide to iTunes Connect matches the bundle ID you\nused when you connected your app to your Firebase project.\n\nAs part of your Game Center integration, you define an authentication handler\nthat is called at multiple points in the Game Center authentication process. In\nthis handler, check if the player is signed in with Game Center. If so, you can\ncontinue to sign in to Firebase. \n\nSwift \n\n```swift\nlet localPlayer = GKLocalPlayer.localPlayer()\nlocalPlayer.authenticateHandler = { (gcAuthViewController?, error) in\n if let gcAuthViewController = gcAuthViewController {\n // Pause any activities that require user interaction, then present the\n // gcAuthViewController to the player.\n } else if localPlayer.isAuthenticated {\n // Player is signed in to Game Center. Get Firebase credentials from the\n // player's Game Center credentials (see below).\n } else {\n // Error\n }\n}\n```\n\nObjective-C \n\n```objective-c\n__weak GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];\nlocalPlayer.authenticateHandler = ^(UIViewController *gcAuthViewController,\n NSError *error) {\n if (gcAuthViewController != nil) {\n // Pause any activities that require user interaction, then present the\n // gcAuthViewController to the player.\n } else if (localPlayer.isAuthenticated) {\n // Player is signed in to Game Center. Get Firebase credentials from the\n // player's Game Center credentials (see below).\n } else {\n // Error\n }\n};\n```\n\nAuthenticate with Firebase\n\nAfter you determine that the local player has signed in with Game Center,\nsign the player in to your game by creating an `AuthCredential` object with\n`GameCenterAuthProvider.getCredential()` and passing that object to\n`signIn(with:)`: \n\nSwift \n\n```swift\n// Get Firebase credentials from the player's Game Center credentials\nGameCenterAuthProvider.getCredential() { (credential, error) in\n if let error = error {\n return\n }\n // The credential can be used to sign in, or re-auth, or link or unlink.\n Auth.auth().signIn(with:credential) { (user, error) in\n if let error = error {\n return\n }\n // Player is signed in!\n }\n```\n\nObjective-C \n\n```objective-c\n// Get Firebase credentials from the player's Game Center credentials\n[FIRGameCenterAuthProvider getCredentialWithCompletion:^(FIRAuthCredential *credential,\n NSError *error) {\n // The credential can be used to sign in, or re-auth, or link or unlink.\n if (error == nil) {\n [[FIRAuth auth] signInWithCredential:credential\n completion:^(FIRUser *user, NSError *error) {\n // If error is nil, player is signed in.\n }];\n }\n}];\n```\n\nNext steps\n\nAfter a user signs in for the first time, a new user account is created and\nlinked to their Game Center ID. This new account is stored as part of your\nFirebase project, and can be used to identify a user across every app in your\nproject.\n\nIn your game, you can get the user's Firebase UID from the `User` object: \n\nSwift \n\n```swift\nlet user = Auth.auth().currentUser\nif let user = user {\n let playerName = user.displayName\n\n // The user's ID, unique to the Firebase project.\n // Do NOT use this value to authenticate with your backend server,\n // if you have one. Use getToken(with:) instead.\n let uid = user.uid\n}\n```\n\nObjective-C \n\n```objective-c\nFIRUser *user = [FIRAuth auth].currentUser;\nif (user) {\n NSString *playerName = user.displayName;\n\n // The user's ID, unique to the Firebase project.\n // Do NOT use this value to authenticate with your backend server,\n // if you have one. Use getTokenWithCompletion:completion: instead.\n NSString *uid = user.uid;\n}\n```\n\nIn your Firebase Realtime Database and Cloud Storage Security Rules, you can get\nthe signed-in user's unique user ID from the `auth` variable, and use it to\ncontrol what data a user can access.\n\nTo get a user's Game Center player information or to access Game Center\nservices, use the APIs provided by [Game Kit](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/GameKit_Guide/Introduction/Introduction.html).\n\nTo sign a user out of Firebase, call `Auth.signOut()`: \n\nSwift \n\n```swift\nlet firebaseAuth = Auth.auth()\ndo {\n try firebaseAuth.signOut()\n} catch let signOutError as NSError {\n print (\"Error signing out: %@\", signOutError)\n}\n```\n\nObjective-C \n\n```objective-c\nNSError *signOutError;\nBOOL status = [[FIRAuth auth] signOut:&signOutError];\nif (!status) {\n NSLog(@\"Error signing out: %@\", signOutError);\n return;\n}\n```"]]