arrow_back
logo
search
SupportlaunchAPI
menulaunchSign In
close
OverviewConceptsAdmin PanelCloudAPICompliance
Overview
Get StartedAuthorizationMessagingJackpotsMultiplayerGame Client InterfaceErrors Handle
Get StartedAuthorizationGame SessionMessagingBettings and WinningsRandom Numbers GeneratorJackpotsMultiplayerTesting
Overview
Overview
Using the client libraryImplementing an integrationDeploying an integration
Replying to a gamePending Winnings
.NET CoreGoJavaNodeJsPHPPythonRuby
OverviewOverwriting jackpots
launchAPISupport
launchSign In

Authorization

Before you begin

Before you can use it, you need to:

  1. Create a Game inside the Fireball Admin panel
  2. Create Game Function
  3. Create Game Client

Authorization request

  1. Parse incoming json message in Function script
    [FunctionsStartup(typeof(Startup))]
    public class Function : ICloudEventFunction<MessagePublishedData>
    {
        ...

        public async Task HandleAsync(CloudEvent cloudEvent, MessagePublishedData data, CancellationToken cancellationToken)
        {
            string messageJson = data.Message?.TextData;
            ParseResult result = await _fireball.ParseMessage(messageJson);
            MessageResult messageResult = await _game.HandleMessage(result);
        }
    }
  1. Receiving authorization message from client and send auth request to appropriate operator integration in the Game script:
        public async Task<MessageResult> HandleMessage(ParseResult parseResult)
        {
            if (parseResult.IsSuccess)
            {
                switch (parseResult.MessageName)
                {
                    case FireballConstants.MessagesNames.AUTHENTICATE:
                        return await Auth(parseResult.ToMessage<AuthMessage>());

                    default:
                        return MessageResult.ErrorResult($"Undefined message name: {parseResult.MessageName}");
                }
            }

            return MessageResult.ErrorResult("Error Parse message...");
        }

        ...

        public async Task<MessageResult> Auth(AuthMessage message)
        {
            _logger.Log($"authenticate: {message.ToJson()}");

            // send
            return await _fireball.Authenticate(message);
        }
  1. Receiving session message from operator's integration as a result of successful authorization:
        public async Task<MessageResult> HandleMessage(ParseResult parseResult)
        {
            if (parseResult.IsSuccess)
            {
                switch (parseResult.MessageName)
                {
                    ...

                    case FireballConstants.MessagesNames.SESSION:
                        return await OnAuthSuccess(parseResult.ToMessage<SessionMessage>());

                    ...
                }
            }

            ...
        }
  1. Check for Game Session and send session message to the Game client:
        public async Task<MessageResult> OnAuthSuccess(SessionMessage message)
        {
            if (message.GameSession == null)
            {
                // create new game session
            }
            return await _fireball.SendSessionToClient(message);
        }

More information about creating and managing game sessions check here

Authorization Reject

  1. Receiving authorization reject message from operator's integration as a result of failed to authorize:
        public async Task<MessageResult> HandleMessage(ParseResult parseResult)
        {
            if (parseResult.IsSuccess)
            {
                switch (parseResult.MessageName)
                {
                    ...

                    case FireballConstants.MessagesNames.AUTHENTICATE_REJECT:
                        return await OnAuthReject(parseResult.ToMessage<ErrorMessage>());

                    ...
                }
            }

            ...
        }
  1. Sending authorization error to client:
        public async Task<MessageResult> OnAuthReject(ErrorMessage error)
        {
            return await _fireball.SendErrorToClient(error, ErrorCode.Authentication);
        }

Next Steps

  • Deploy Game Function
  • Manage Game Session and game state
  • Messaging with Game client
  • Check Sample Project
Copyright © 2020-. All rights reserved.v1.0.8