Fyre
  • Fyre
    • How Does It Work?
    • Key Features
    • Who uses Fyre?
  • Admin Dashboard
    • Login
    • Events
      • Create An Event
      • Configurations
        • General Configurations
        • Referral Configurations
        • Prize Configurations
        • KYC Configurations
        • Custom Input Configurations
        • Social Configurations
          • Twitter Follow
          • Twitter Retweet
          • Telegram Join
          • Discord Join
          • GitHub PR
        • Collect Wallet Configurations
        • Tokens or NFT Holding Configurations
        • Custom Smart Contract Configurations
        • Custom API Configurations
      • Edit An Event
        • Add a new task
        • Remove a task
        • Edit existing task
      • Clone An Event
      • Delete an Event
    • Participants Data
    • Settings
      • Teams
      • Org
      • Apps
      • Subscriptions
    • Reward Distribution
  • Participant
    • Campaign Landing page
    • How to Participate
    • Claiming Rewards
  • Developer
    • App Setting
      • Registration
      • Update
      • Authentication
    • APIs
      • /app/events
      • /app/user/events
      • /app/user/redirection
      • Error Codes
      • Event Action Types
    • Demo
Powered by GitBook
On this page

Was this helpful?

  1. Developer
  2. App Setting

Authentication

For app's server to request any data from the Fyre server using APIs, it needs to authentication itself to Fyre backend.

Authentication happens on every single request by sending a digital signature in the request body. The Fyre server verifies the signature before sending data.

In order to generate a signature, the app's server need to sign message (message feld of the request body) using registered app's private key and send the signature in fyresign field of the request body.

Sample code snippet to generate signature in Javascript:

// Require web3 packages
const web3 = require("web3");
const Web3 = new web3();

// generates signature and messageHash
const generateSignature = async (privateKey, message) => {
const { signature, messageHash } = await Web3.eth.accounts.sign(
    JSON.stringify(message),
    privateKey
  );
  return {
    message,
    fyresign: signature,
    messageHash
  };
};
// sample request message 
const message = {
  "appId": "6274a30fc43e35144642a484",
  "externalUserId": "456fhrghtuht374",
  "eventId": "6274b4cde7556226721e620c",
  "isEmail": false,
  "iat": Math.floor(Date.now() / 1000); //in seconds,
  "exp": Math.floor((Date.now() + (3600 * 24 * 1000)) / 1000),  //valid for a day,
  "metaData": {
    "limit": 10, // fetching 10 records 
    "page": 1,
  }
}
const privateKey = "0x5b79b6758d25694e8fef4f769a48f768bf838dd17fec4d9c54bcf7cd3b4a0e1a"; // generated during app's registration on Hyperfyre admin dashboard.
const { message, fyresign, messageHash } = generateSignature(privateKey, message);

In the above code, we used standard web3 package to generate digital signature. There are libraries available in various different languages like JavaScript, Go etc which can used based on requirement.

To sign a message, all you have to do is, use web3.eth.sign() function. The funcation takes two parameters:

  • a message: Will contain the request parameters, depending on the need.

  • a privateKey: Generated during the app registration phase.

web3.eth.sign() returns three values message, signature and messageHash.

The server need to send all these parameters in the request body of any API call to Fyre backend.

Note:

  1. Make sure to send the signature in the fyresign field in the request body.

  2. We only accept message in specific format. Read the API documentation to understand the message format.


We learnt how an app's server can produce a digital signature in order to authenticate itself to Fyre server and request data, in the next section we will see what all APIs available and how to call them.

PreviousUpdateNextAPIs

Last updated 2 years ago

Was this helpful?